ios中运行机制三个常用机制

来源:互联网 发布:sopcast网络电视汉化版 编辑:程序博客网 时间:2024/06/05 05:06
/**
 *  分类中不能定义成员变量,不能直接定义属性
 *  如果定义了属性,必须自己重写getter&setter方法
 *  

     如果分类中,能够实现纪录属性功能.
     需要用到'运行时机制',是开发OC语言的!
     
     在日常开发中用到三个场景
     1.在分类中,通过关联对象,给分类动态添加属性,能够让分类解耦,开发框件。
     2.动态获得一个类的属性列表,可以开发字典模型转模型的框架。
     3.交换方法,动态交换方法的地址,用处主要用在接管系统方法。
 *
 *
 */
    /**
     *  动态关联属性
     1.关联到的对象
     2.属性的key  const void *key 定义一个常量 (语法相当于id)
     3.纪录属性的值
     4.关联的引用
     OBJC_ASSOCIATION_ASSIGN   ARC中的assign
     OBJC_ASSOCIATION_COPY     ARC中的COPY
     OBJC_ASSOCIATION_COPY_NONATOMIC  ARC中的线程保护问题
     OBJC_ASSOCIATION_RETAIN
     OBJC_ASSOCIATION_RETAIN_NONATOMIC  ARC中的Strong
     
     weak 和 assgin区别
     相同点:
          都不会强引用。
     不同点:
          weak引用的对象,一旦引用计数为0,会自动指向nil
          assign引用的对象,一旦引用计数为0,对象地址不变,因此MRC下,会出现野指针的问题。也是常见bug
        
          objc_setAssociatedObject(<#id object#>, <#const void *key#>, <#id value#>, <#objc_AssociationPolicy policy#>)
0 0