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

ios中给分类添加属性

作者: 陈藩 | 来源:发表于2018-04-23 10:51 被阅读0次

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

1.先创建一个分类,以下以UIImage为例子。
2.增加一个属性。
3.导入runtime框架,重写set方法和get方法


@interface UIImage (Name)

@property (nonatomic,copy) NSString * name;

@end
#import <objc/runtime.h>

@implementation UIImage (Name)

static const void *classNameKey = &classNameKey;

-(void)setName:(NSString *)name{
    objc_setAssociatedObject(self, classNameKey, name,  OBJC_ASSOCIATION_COPY_NONATOMIC);
}

-(NSString *)name{
   return  objc_getAssociatedObject(self, classNameKey);
}

@end

//其中注意以下的参数是用来表示创建的属性的类型的


typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) {
    OBJC_ASSOCIATION_ASSIGN = 0,           /**< Specifies a weak reference to the associated object. */
    OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, /**< Specifies a strong reference to the associated object. 
                                            *   The association is not made atomically. */
    OBJC_ASSOCIATION_COPY_NONATOMIC = 3,   /**< Specifies that the associated object is copied. 
                                            *   The association is not made atomically. */
    OBJC_ASSOCIATION_RETAIN = 01401,       /**< Specifies a strong reference to the associated object.
                                            *   The association is made atomically. */
    OBJC_ASSOCIATION_COPY = 01403          /**< Specifies that the associated object is copied.
                                            *   The association is made atomically. */
};

相关文章

  • 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可以达到添加属性的...

  • Add CGFloat property to Category

    给扩展类添加CGFloat类型的属性 IOS中可以使用运行时动态给类添加属性,对象类型的属性添加方法大家都知道 但...

网友评论

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

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