11. 弱持有容器方案
作者: 高老师很忙
在通知者模式中,manger 想弱持有一些对象,我们可以怎么做呢?
方案一:使用Foundation为大家提供的弱持有容器:NSHashTable、NSMapTable、NSPointerArray,初始化时把option设置成weak即可;
方案二:可以使用CFFoundation的CFArrayCreateMutable等来创建容器,被添加的对象引用计数不会加1;
方案三:可以妙用NSValue的valueWithNonretainedObject方法,被添加的对象不需要服从NSCopying协议;
方案四:使用我们通常用的强持有容器,让被添加的对象weak一下,比如使用__weak和block配合:在block中返回 weak 对象。
Last updated
Was this helpful?