美文网首页iOS分享之路-快速开发电商平台工具程序员
【iOS分享之路-快速上手Runtime】四、给分类添加属性

【iOS分享之路-快速上手Runtime】四、给分类添加属性

作者: 全栈攻城狮DWQ | 来源:发表于2017-03-18 14:53 被阅读3876次
    DWQ-LOGO.jpeg

    引述

    作为iOS开发者的我们都知道,分类是不能直接添加属性的,那么我们有时候又需要实现这个功能,那么我们应该怎么办才能为分类添加上属性呢。

    Runtime给分类添加属性原理

    给一个类声明属性,其实本质就是给这个类添加关联,并不是直接把这个值的内存空间添加到类存空间。

    Runtime给分类添加属性步骤

    • 1.在分类的.h文件中声明想要定义的属性

    • 2.在分类的.m文件中实现getter和setter方法

    • 3.引入runtime头文件,然后在setter方法中用objc_setAssociatedObject关联对象

      objc_setAssociatedObject(self, @"age", age, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    
    

    参数说明:

    // object:给哪个对象添加属性
    // key:属性名,根据key去获取关联的对象 ,void * == id
    // value:关联的值
    // policy:策略
    
    • 4.在getter方法中根据关联的key,获取关联的值。
     return objc_getAssociatedObject(self, @"age");
    
    
    • 5.在需要使用的地方引入分类的头文件,然后即可用 .语法来获取值。
     NSObject *objc = [[NSObject alloc] init];
        objc.age = @"123";
        NSLog(@"%@",objc.age);
    

    效果展示:

    添加属性.png

    Demo下载地址

    Runtime添加属性Demo
    广大书友记得给个好评,在GitHub上给个Star噢!

    相关文章

      网友评论

      • MemoryReload:用动态原理,解决静态问题,呵呵……用运行时添加属性,根本就不分什么分类,原类、类扩展、分类都已经加载到一个原类对象里了。类的这三种接口实现都可以用运行时添加属性。

      本文标题:【iOS分享之路-快速上手Runtime】四、给分类添加属性

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