美文网首页
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 分类中添加属性

    很简单,看下注释就明白了。github代码

  • ios 分类中添加属性

    category使用 objc_setAssociatedObject/objc_getAssociatedObj...

  • iOS 分类中添加属性

    注意 分类主要是给原类添加方法的,分类的结构指针中只有方法列表,没有属性列表。所以原则上分类里面最好不要声明属性 ...

  • ios中的分类

    在ios中给分类添加属性,可以通过属性关联来实现重写set方法如下: -(NSMutableDictionary ...

  • iOS runtime 动态添加属性,方法,方法交换案例

    iOS runtime 动态添加属性,方法,方法交换案例 动态添加属性 我之前写过分类的文章,说过,分类不能添加成...

  • 类 *分类* 类扩展

    分类:Category iOS中的分类主要的作用就是为类提供扩展,增加一些方法。但是只能添加方法 不能添加属性?我...

  • ios中给分类添加属性

    ios中利用类别给已有的类扩展方法是可以的,但是如果直接的添加属性是会报错的。利用runtime可以达到添加属性的...

  • IOS 分类中如何添加属性

    1.对于自己需要扩展的类创建一个分类 2.首先在.h文件中 相同于普通.h 加入 @property(retain...

  • ios中给分类添加属性

    ios中利用类别给已有的类扩展方法是可以的,但是如果直接的添加属性是会报错的。利用runtime可以达到添加属性的...

  • ios分类添加属性

    为什么分类不能添加属性 结构体没有属性列表:这也就是为什么分类不能添加属性的本质原因。 属性是什么 生成实例变量 ...

网友评论

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

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