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

在分类(Category)中添加属性

作者: FallPine | 来源:发表于2017-06-22 18:51 被阅读169次

在ios开发中,分类的概念我们都很熟悉,通常我们会利用分类来给一个类添加一些额外的方法,添加方法的操作和平时在类中添加方法的操作一致,这里就不再赘述。下面我们来说说怎样在分类中添加属性:

添加属性可以再分类的.h文件中来添加,也可以再.m文件中的匿名分类中添加,我们像添加普通属性一样添加分类属性,这是编译器不会报任何的异常,但是当使用到这些分类属性的时候会导致程序崩溃,为了解决这个问题,我们需要用到runtime运行时。

举个栗子:
添加的分类属性如下:

@property (nonatomic, copy) NSString *title;

添加运行时头文件

#import <objc/runtime.h>

然后重写属性的set和get方法

// 定义属性的Key
static NSString *titleKey = @"titleKey";

- (void)setTitle:(NSString *)title
{
    objc_setAssociatedObject(self, &titleKey, title, OBJC_ASSOCIATION_COPY);
}

- (NSString *)title
{
    return objc_getAssociatedObject(self, &titleKey);
}

objc_setAssociatedObject方法中,有四个参数,分别是:源对象,关联时的用来标记是哪一个属性的key(因为你可能要添加很多属性),关联的对象和一个关联策略。

重写完set和get方法后,就可以正常使用了。

参考文章:【忆江南的博客】【给分类(Category)添加属性】

相关文章

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

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

  • 在分类(Category)中添加属性

    在ios开发中,分类的概念我们都很熟悉,通常我们会利用分类来给一个类添加一些额外的方法,添加方法的操作和平时在类中...

  • iOS 给分类category添加属性

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

  • 分类-Category

    分类-Category 分类的功能 在OC中,我们可以使用分类为类添加方法,属性.也可以覆盖类原有的方法,自己添加...

  • 分类-Category

    分类-Category 分类的功能 在OC中,我们可以使用分类为类添加方法,属性.也可以覆盖类原有的方法,自己添加...

  • 关联对象方式探秘

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

  • iOS开发 Category

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

  • iOS Category分类

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

  • 【iOS 底层原理】block

    1.使用 runtime 为 Category 动态关联对象 在分类中可以用 @property 添加属性,但是不...

  • 分类(Category)添加属性

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

网友评论

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

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