11. 弱持有容器方案

作者: 高老师很忙

在通知者模式中,manger 想弱持有一些对象,我们可以怎么做呢?

方案一:使用Foundation为大家提供的弱持有容器:NSHashTableNSMapTableNSPointerArray,初始化时把option设置成weak即可;

方案二:可以使用CFFoundationCFArrayCreateMutable等来创建容器,被添加的对象引用计数不会加1;

方案三:可以妙用NSValuevalueWithNonretainedObject方法,被添加的对象不需要服从NSCopying协议;

方案四:使用我们通常用的强持有容器,让被添加的对象weak一下,比如使用__weakblock配合:在block中返回 weak 对象。

Last updated