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