iOS 扩展机制category与associative
category和associative作為objective-c 擴展機制的兩個特性,category可以通過它來擴展方法;associative可以通過它來擴展屬性。
在iOS開發過程中,前者category比較常見,也比較簡單,這里就不說了,這里主要說一下associative;
后者associative相對用的就比較少,要用associative就必須使用#import<objc/runtime.h>,然后調用objc_setAssociatedObject 和?objc_getAssociatedObject ?方法分別為屬性添加setter 和 ?getter方法,就可以實現屬性擴展了。
 
下面介紹一下這兩個方法:
①:void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy)
其中的參數分別是:
Parameters
object: ?The source object for the association.
key: The key for the association.
value: ?The value to associate with the key key for object. Pass nil to clear an existing association.
policy: ?The policy for the association
其中的policy有enum {
?? OBJC_ASSOCIATION_ASSIGN = 0,
?? OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,
?? OBJC_ASSOCIATION_COPY_NONATOMIC = 3,
?? OBJC_ASSOCIATION_RETAIN = 01401,
?? OBJC_ASSOCIATION_COPY = 01403
};
②:id objc_getAssociatedObject(id object, void *key)
Parameters
object: ?The source object for the association.
key: ?The key for the association.
Return Value
The value associated with the key key for object.
 
我這里是擴展UIImageview為其添加一個方法和一個屬性。
category的頭文件:
[cpp] view plaincopy
category的實現文件:
[cpp] view plaincopy
說明:頭文件中添加了一個屬性和一個方法,在實現文件中使用associative特性為屬性重寫了setter和getter方法,都比較簡單。
測試一下:
[cpp] view plaincopy運行后,模擬器上就顯示一個圖片,終端輸出:output mystring:hello world
總結
以上是生活随笔為你收集整理的iOS 扩展机制category与associative的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 恋与制作人配音
- 下一篇: 绝地求生可爱女生昵称
