美文网首页
iOS 分类中添加属性

iOS 分类中添加属性

作者: 石缝小草 | 来源:发表于2017-03-31 10:32 被阅读0次

    注意

    • 分类主要是给原类添加方法的,分类的结构指针中只有方法列表,没有属性列表。所以原则上分类里面最好不要声明属性
    • 当然用@property可以声明属性 但是却不能生成成员变量和setter getter方法,所以如果要访问属性的话,最好通过原类的.h文件来访问。
    • 在分类中如有有原类的方法,那么会优先执行分类里面的方法
    • 我们会发现在分类中声明属性,只要不调用就不会报错,当然,我们也会发现报错的原因在于调用时没有生产setter和getter方法。由此可见分类并不是不可以进行属性声明,只要我们手动添加setter和getter方法就可以通过。

    怎样手动生成setter getter方法?

    • 分类.h文件
      @property (strong, nonatomic) NSString *cheshiString;
    • 分类.m文件
      导入头文件
      #import <objc/runtime.h>
      定义常量
      static char *cheshiName = "cheshiName";
      实现setter getter方法
      - (void)setCheshiString:(NSString *)cheshiString{
      objc_setAssociatedObject(self, cheshiName, cheshiString, OBJC_ASSOCIATION_COPY_NONATOMIC);
      }
      -(NSString *)cheshiString{
      return objc_getAssociatedObject(self, cheshiName);
      }

    当然,最后我们会发现这个方法只能访问属性,仍然不能调用成员变量,所以开发中最好不要在分类里面添加属性。

    相关文章

      网友评论

          本文标题:iOS 分类中添加属性

          本文链接:https://www.haomeiwen.com/subject/vyhknttx.html