category是objective-c中常用的語法特性,通過它可以很方便的為已有的類來新增函式。但是category不允許為已有的類新增新的屬性或者成員變數。
一種常見的辦法是通過runtime.h中objc_getassociatedobject / objc_setassociatedobject來訪問和生成關聯物件。通過這種方法來模擬生成屬性。
標頭檔案宣告:
實現的.m檔案:@inte***ce nsobject (extension)
@property (nonatomic, strong) nsstring *username;
@property (nonatomic, assign) sel onimagefinish;
@end
#import "nsobject+extension.h"
#import static const void * g_usernamekey = &g_usernamekey;
static const void * g_onimagefinish = &g_onimagefinish;
@implementation nsobject (extension)
@dynamic username;
- (nsstring *)username
- (void)setusername:(nsstring *)username
- (sel)onimagefinish
- (void)setonimagefinish:(sel)action
@end
Category支援新增屬性與成員變數
category是objective c中常用的語法特性,通過它可以很方便的為已有的類來新增函式。但是category不允許為已有的類新增新的屬性或者成員變數。一種常見的辦法是通過runtime.h中objc getassociatedobject objc setassociatedobject來...
讓Category支援新增屬性與成員變數
category是objective c中常用的語法特性,通過它可以很方便的為已有的類來新增函式。但是category不允許為已有的類新增新的屬性或者成員變數。一種常見的辦法是通過runtime.h中objc getassociatedobject objc setassociatedobject來...
為category新增屬性和成員變數
category可以在不改變類結構的情況下為已有的類新增方法,但是category不執行新增屬性和成員方法,這可以用中的 objc setassociatedobject idobject,const void key,idvalue,objc associationpolicy policy 和 ...