objc动态运行时一些API

首先要导入

<objc/objc-runtime.h>


主要用于在本页面中 类与类之间的通信,

采用关联的模拟。

如 UILabel *testLabel = [UILabel alloc ]init];

    objc_setAssociatedObject(testLabel,@"TestKey",@"Value",OBJC_ASSOCIATION_COPY_NONATOMIC);

关于参数 testLabel:一般是绑定一个控件 可以是属于UIAlertView、UILabel、UITextField..

            TestKey:一般是给定一个Key值,在获取关联值的时候 这个key值是关键.

            Value:绑定在控件和Key值上.

            OBJC_ASSOCIATION_COPY_NONATOMIC:可以理解为该value的属性的声明值<个人观点>,该属性的意思是 <nonatomic,copy>.该参数的有几个协议选择.OBJC_ASSOCIATION_ASSIGN:可以理解为<assign>.OBJC_ASSOCIATION_RETAIN_NONATOMIC:如同<nonatomic,retain>,OBJC_ASSOCIATION_RETAIN:如同<retain>,OBJC_ASSOCIATION_COPY:如同<copy>;

 

    在本类中其它的方法中

    objc_getAssociatedObject(testLabel,@"TestKey");

关于参数 testLabel:必须与上面的控件地址一致    

            TestKey:关键key值 如想获取对应的value,该参数必须是对应的key值.

该方法返回一个id值 这个值可能是NSString类型的 可能是NSArray.该值应与绑定的时候的值的类型一致.


  如果不需要用到该属性 或者想删除与该控件绑定的value值

    objc_removeAssociatedObects(testLabel)

关于参数 testLabel:必须与上面的控件地址一致    


你可能感兴趣的:(objc动态运行时一些API)