Objective-C语言
- 分类(什么是分类?分类的实现机制、原理是怎样的?我们应该怎样为一个分类提供实例变量呢?--涉及到第2点关联对象的考察)
- 关联对象(Runtime分析和查看 分类和关联对象的实现机制、原理)
- 扩展、代理怎么使用(分类和扩展的区别在哪里?)
- KVO、KVC( KVO、KVC的实现机制、原理、包括涉及到了哪些设计思想)
- NSNotification(通知的实现机制和原理)
- 属性关键字(声明属性时,会用到一些关键字的实际问题)
关联对象
1.能否给分类添加成员变量?
- 可以添加。我们不能在分类的声明或者说定义实现的时候,直接为分类添加成员变量;
但是可以通过关联对象的技术来为分类添加成员变量,来达到分类可以添加成员变量的效果。
2.关于关联对象技术,有几个函数
2.1 获取属性值 (根据指定的key到object这个对象当中,获取和key相对于的一个关联值)
-
/* object 目标对象。即获取哪个对象的关联属性 key 根据对应的key查找对象的属性 */ id objc_getAssociatedObject(id object, const void *key) { return objc_getAssociatedObject_non_gc(object, key); }
2.2 添加并设置属性值
- 首先设定value值
- 通过key和value建立一个关系(映射关系)
- 然后我们把这个对应关系通过policy这个策略关联到object这个对象上面
- policy关联策略实际上就是声明或者告诉函数,value以哪种形式(copy、assign、retain等)关联到宿主对象上面
//objc_setAssociatedObject_non_gc方法透传_object_set_associative_reference ,具体_object_set_a

本文深入探讨Objective-C中关联对象的实现机制与原理,讲解如何为分类添加成员变量,关联对象的添加、获取及移除方法,以及关联对象在全局容器中的存储方式。
最低0.47元/天 解锁文章
678

被折叠的 条评论
为什么被折叠?



