在分类中利用@property添加属性,只能声明实例变量的存取声明,而没有存取方法的实现,可以利用runtime实现。

在头文件中定义属性

@property (nonatomic, copy)NSString *name;

在.m文件中实现存取方法

static char *key = "name";

- (NSString *)name

{

// 根据关联的key,获取关联的值。

return objc_getAssociatedObject(self, key);

}

- (void)setName:(NSString *)name

{

// 第一个参数:给哪个对象添加关联

// 第二个参数:关联的key,通过这个key获取

// 第三个参数:关联的value

// 第四个参数:关联的策略

objc_setAssociatedObject(self, key, name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}

转载于:https://www.cnblogs.com/ladyotao/p/5908230.html

利用runtime给分类添加属性相关推荐

  1. 如何给iOS 分类添加 属性

    2019独角兽企业重金招聘Python工程师标准>>> 比如我们封装了一个类,不想再动它了,但是我们又需要在那个类中增加一些方法,这时候我们就不必在那个类中做修改或者再定义一个它的子 ...

  2. iOS 分类添加属性

    1.首先在分类文件中导入头文件 #import <objc/runtime.h> 2.实现代码如下: (1).h定义文件 #import <UIKit/UIKit.h>@int ...

  3. iOS Category 添加属性实现原理 - 关联对象

    iOS Category 添加属性实现原理 - 关联对象 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系.对象一开始初始化的时候其属性 ...

  4. js动态给元素添加属性

    最终效果:  具体代码: <!DOCTYPE html> <html lang="zh"> <head><meta charset=&qu ...

  5. Runtime 系列 3-- 给 category 添加属性

    Associated Objects的作用 Associated Objects的作用一般有如下三种: 为系统类添加私有变量以帮助实现细节: 为系统类添加公有属性: 为 KVO 创建一个关联的观察者. ...

  6. iOS运行时-使用Runtime向Category中添加属性以及运行时介绍

    前言 了解OC的都应该知道,在一般情况下,我们是不能向Category中添加属性的,只能添加方法,但有些情况向,我们确实需要向Category中添加属性,而且很多系统的API也有一些在Category ...

  7. Runtime(动态添加属性)

    2019独角兽企业重金招聘Python工程师标准>>> 下面通过一个实例展示一下Runtime(动态添加属性)的用法 下面对运行时添加属性用到的策略参数进行补充: 这样看来,前面的N ...

  8. OC中category(分类)中添加属性

    OC中category(分类)中添加属性 因为OC中无法添加成员变量并且添加的属性不会被保存,所以需要重写get和set方法来实现属性的保存. //setter //self表示属性拥有者是当前类, ...

  9. 利用runtime实现KVO

    KVO实现原理 一.关于KVO KVO(Key-Value Observing)提供一种机制,当指定对象的属性被修改后,就会通知观察者.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动 ...

  10. Category为什么不能添加属性

    分类中能不能定义实例变量,为什么? 答案:不能.类的内存布局在编译时期就已经确定了,category是运行时才加载的早已经确定了内存布局所以无法添加实例变量,如果添加实例变量就会破坏category的 ...

最新文章

  1. php多个参数伪静态,伪静态技术与页面多参数传送的处理办法
  2. sudo命令_如何在非 sudo 用户下运行 docker 命令?
  3. Linux定期执行xshell脚本(入门)
  4. 步步为营-53-JavaScript
  5. sap abap开发从入门到精通_云端的ABAP Restful服务开发
  6. sobel边缘检测java_Sobel边缘检测
  7. 一个野生程序员的自我修养
  8. java水仙花数编程_水仙花数java编程实现
  9. 《勿忘初心,勿忘前行》——2016年度总结
  10. 提神醒脑 MVP、MVVM 关系精讲
  11. 华为ensp——企业网络的设计与实现【方案测试验证】
  12. 如何使用命令行合成一句话图片木马
  13. 未来网络什么样?新华三是这么说的
  14. 阿里ESC7天训练营---搭建FTP服务
  15. 5G+AI+大数据+IoT如何改变一切?
  16. 线性回归最小二乘法计算步骤以及sklearn参数介绍
  17. Kaprekar constant(卡普雷卡尔黑洞)
  18. fcpx插件:Stupid Raisins Flow Pop(48个平滑和无缝过渡)
  19. 10月,你知道有哪些程序员热点新书上榜了吗?
  20. 两万字搞定《数据结构》 八大排序 必读(建议收藏)

热门文章

  1. 企业级的Java快速开发平台,首选iMatrix平台。
  2. ARM中C和汇编混合编程及示例(转)
  3. 引言(NParsing框架功能简介、NParsing的由来)
  4. Effective C# Item4:使用Conditional特性代替#if条件编译
  5. 立即释放.net下的com组件
  6. blk_queue_bio函数学习
  7. Linux MPLS功能详解
  8. linux下proc文件的读写(部分转载)
  9. RTMP 协议学习总结
  10. .jar文件参与android源码编译