iOS分類新增屬性

2021-08-27 05:58:59 字數 1358 閱讀 7385

我們可以通過runtime來給ios的分類新增屬性.

1. 首先我們像普通的類一樣在.h裡頭使用@property宣告乙個屬性

///***+ch.h.這裡是***類的ch分類的.h檔案

@inte***ce

*** (ch)

@property (nonatomic ,strong) nsstring *name;

@end

這時,.m中就會出現兩個警告

property 'name' requires method

'name'

to be defined - use @dynamic or provide a method implementation in this category

property 'name' requires method

'setname:'

to be defined - use @dynamic or provide a method implementation in this category

這時.我們在.m中使用@dynamic修飾一下這個屬性名字就沒有警告了.

//***+ch.m

@implementation

*** (ch)

@dynamic name;

@end

2.使用runtime的方法動態繫結屬性.(「重寫」get-set方法)
///1.

//***+ch.m

#import ///記得別忘記匯入objc/runtime.h

@implementation

*** (ch)

@dynamic name;

/// name的key

static

char *namekey = "namekey";

- (void)setname:(nsstring *)name

- (nsstring *)name else

}@end

到此為止,我們就給分類新增好屬性了.

注意點:

1.物件有哪些型別

typedef objc_enum(uintptr_t, objc_associationpolicy) ;
2.非物件型別的取值.我們可以使用id的getvalue來去取值去返回.

例: 這裡我們取乙個cgrect值

- (cgrect)rect else

}

ios 分類新增屬性。

我們都知道可以通過分類新增方法,但是是否可以新增變數有一部分人就不知道了 其實分類裡面是不可以新增成員變數的,但是卻可以新增屬性。這是因為在分類中新增的屬性不會自動生成set get方法,這是就需要自己在分類的實現檔案裡面實現屬性的set get方法,如果你跟平時一樣去寫set get方法你會發現 ...

iOS 為分類新增屬性

我們知道分類可以很簡單的新增方法,但是新增屬性卻無能為力,但是我們還是可以通過動run time的associate就可以做到 比如說我要在uimage中新增乙個url屬性 h inte ce uiimage url property nonatomic,copy nsstring url end ...

iOS 在分類中新增屬性

oc 對類的寬展有三中方式,分類,延展,繼承,延展和繼承不必多說。今天就說下如何給分類新增屬性。我們知道oc比較爽的就是可以新增分類,在分類中新增自己喜歡的方法。可能有人會問了,不能新增屬性啊 其實不然。比如我要在乙個按鈕的分類中新增乙個陣列屬性就可以這樣用 inte ce uibutton tra...