Category新增屬性與成員變數

2021-06-27 12:20:32 字數 834 閱讀 3507

category是objective-c中常用的語法特性,通過它可以很方便的為已有的類來新增函式。但是category不允許為已有的類新增新的屬性或者成員變數。     

一種常見的辦法是通過runtime.h中objc_getassociatedobject / objc_setassociatedobject來訪問和生成關聯物件。通過這種方法來模擬生成屬性。

標頭檔案宣告:

@inte***ce nsobject (extension)

@property (nonatomic, strong) nsstring *username;

@property (nonatomic, assign) sel onimagefinish;

@end

實現的.m檔案:

#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 和 ...