美文网首页
分类(Category)添加属性

分类(Category)添加属性

作者: HAPPY小元宝 | 来源:发表于2017-05-18 16:02 被阅读94次
  • OC的分类允许给分类添加属性,但不会自动生成setter和getter,可通过运行时建立关联引用,添加一个title属性,如下:
  @interface MyClass (Category)
  @property (nonatomic, assign) NSString *title;
  @end
  • 在实现里添加setter和getter:
  static void *key = &key;
  @implementation MyClass (Category)
   - (void)setTitle:(NSString *)title {
  objc_setAssociatedObject(self, & key, title, OBJC_ASSOCIATION_COPY); 
    }

   -(NSString *)title  {  
    return objc_getAssociatedObject(self, &key);  
}
 @end
  • OC中分类添加属性的情况,在swift中也存在,那么我们看看swift中的实现:
// MyClassExtension.swift
  class MyClass {
}

  private var key: Void?
  extension MyClass {
    var title: String? {
        get {
            return objc_getAssociatedObject(self, &key) as? String
        }

        set {
            objc_setAssociatedObject(self,
                &key, newValue,
                .OBJC_ASSOCIATION_COPY_NONATOMIC)
        }
    }
}

相关文章

  • iOS开发 Category

    1.说下category原理,以及category为什么只能添加方法不能添加属性? 分类的实现是将category...

  • iOS Category分类

    1.说下category原理,以及category为什么只能添加方法不能添加属性? 分类的实现是将category...

  • 分类(Category)添加属性

    OC的分类允许给分类添加属性,但不会自动生成setter和getter,可通过运行时建立关联引用,添加一个titl...

  • iOS 分类添加属性

    给分类 Category 添加属性,首先要创建一个分类文件,然后添加你要的属性 .h 文件 @property (...

  • iOS runtime之--动态添加属性和方法

    一、runtime添加属性 在Objective-C中,category分类默认只能添加方法,不能添加属性。根本原...

  • Category-关联对象

    分类添加属性 Category能否添加成员变量?如果可以,如何给Category添加成员变量?不能直接给Categ...

  • iOS 给分类category添加属性

    一、问题:给分类(category)添加属性 最近遇到一个问题:需要在一个类的Category中添加属性; 可以通...

  • 关联对象方式探秘

    对于category分类而言,一般我们不给分类添加属性,只给它添加方法。这是因为给分类添加完属性之后,在其他类中不...

  • iOS底层学习:类的扩展和关联对象

    类的扩展和分类 category:分类、类别 给类增加方法 不能添加成员变量 可以使用runtime给分类添加属性...

  • 十六、关联对象

    分类和类别 1: category: 类别,分类 专门用来给类添加新的方法 不能给类添加成员 属性,添加了成员变量...

网友评论

      本文标题:分类(Category)添加属性

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