由@protected引申的学习:
@private, 仅自己可访问
@protected, 自己和子类可访问
@public, 都可访问
@package, 主要是用于框架类,使用@private太限制,使用@protected或者@public又太开放,就使用这个package吧
由NSPointerArray,NSHashTable,NSMapTable引申的学习:
NSArray中添加一个对象,会使对象的引用计数加1,被NSArray持有
如果有需求在NSArray保持对象的弱引用,对象移除时,NSArray中也随之移除,那要怎么处理。
本文介绍NSPointerArray、NSHashTable、NSMapTable实现对象的弱引用。
在iOS6.0之后,由NSPointerArray类似于NSArray,有NSHashTable类似于NSSet,有NSMapTable为NSDictionary
NSPointerArray和NSArray对比学习:www.cnblogs.com/lxlx1798/p/…
- 和传统 Array 一样,用于有序的插入或移除;
- 与传统 Array 不同的是,可以存储 NULL,并且 NULL 还参与 count 的计算;
- 与传统 Array 不同的是,count 可以 set,如果直接 set count,那么会使用 NULL 占位;
- 可以使用 weak 来修饰成员;
- 成员可以是所有指针类型;
- 遵循 NSFastEnumeration,可以通过 for...in 来进行遍历。
https://juejin.cn/post/6844903529929244686
NSSet和NSHashTable对比学习:
NSDictionary和NSMapTable对比学习:
NSMapTable可以理解为弱引用的字典,可以用来存储对象,该对象消失了也没有关系(创建NSMapTable时可选择key和Value的强弱引用等方式)
遇到Proxy的使用(xxxProxy:NSProxy),从而引申学习:使用NSProxy和NSObject设计代理类的差异
https://blog.csdn.net/studying_ios/article/details/107590658****
初始化细节差别:NSProxy这个基类没有定义默认的init方法
Q: 为什么代理类用NSProxy设计 ( 继承自NSProxy)?
A: NSProxy更适合做为消息转发的代理类, 因为作为一个抽象类, NSProxy自身能处理的方法极小(仅接口中定义的部分方法), 所以其它方法都能够按照设计的预期被转发到被代理的对象中.