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

iOS 分类中添加属性

作者: Young__Li | 来源:发表于2016-12-22 14:47 被阅读47次

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

@implementation UIViewController (Extension)


/**
 *  此方法并不是修改了类本身的结构,原理是通过添加关联对象的方法实现类似的效果
 */

static char *name;

- (void)setLy_name:(NSString *)ly_name
{
    objc_setAssociatedObject(self, name, ly_name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

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

/**
 *  
 *   void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy)
 *
 *   Parameters
 *   object     The source object for the association.   给谁添加关联对象
 *   key        The key for the association.     关联对象的原理是kvc,所以key一定不能变,要用static修饰。
 *   value      The value to associate with the key key for object.   值
 *   policy     The policy for the association. For possible values.  如下 类似 assign,copy,stong等
 */

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

  • ios分类添加属性

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

网友评论

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

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