posted by pimacun on 六 17, 2011 in
開發 |
subscribe
主要利用objectivec的c api中函式:
void objc_setassociatedobject(id object, const void *key, id value, objc_associationpolicy policy)id objc_getassociatedobject(id object, const void *key)
好了,現在直接寫怎麼做了.
1.在定義類別之前, 引入runtime.
#import2.定義&實現類別(以uiview為例)
定義:
@inte***ce uiview(addvariables)實現:@property (nonatomic, retain) nsstring *viewname;
@end
// 定義訪問的key3.呼叫測試:static const char *viewnamekey = "viewnamekey";
@implementation uiview(addvariables)
// get方法
- (nsstring *)viewname
// set方法
- (void)setviewname:(nsstring *)newviewnamekey
@end
- (void)viewdidload輸出結果如下:
testview's newpropery:nori's view
利用類別 Category 為物件新增」例項變數」
利用類別category為物件新增例項變數 屬性擴充套件用objc setassociatedobject,objc getassociatedobject,方法擴充套件用category 主要利用objectivec的c api中函式 void objc setassociatedobject i...
類別(category)延展(extension)
objective c中提供了可以讓我們擴充套件類定義的手段 類目,延展和協議。類目 為已知的類增加新的方法 延展 通知在本類的定義裡使用類目來宣告私有方法 協議 協議宣告了可以被任何類實現的方法。1.類目 類別 category 1 宣告類目 inte ce testmodel newmodel ...
類別 category 以及類擴充套件
1.可以把類別看做是可擴充套件類的介面,而無需對類進行子類化。形式如下 inte ce nsstring extension void method end implementation nsstring extension void method end 2.類別不可以有新的例項變數,只包含方法。...