iOSInterviewQuestions
iOSInterviewQuestions copied to clipboard
第8题,runtime实现weak属性的一点问题
在第8题中,NSObject的类目NSObject (CYLRunAtDealloc)
中的方法cyl_runAtDealloc:
的属性关联个人觉得有点疏漏:
在这个方法中,初始化CYLBlockExecutor
后的属性关联的key采用的是固定的keyrunAtDeallocBlockKey
,这样在多个对象同时弱引用另一个对象的时候,导致只能最后一个对象拥有对这个对象的弱引用。所以,我的想法是,这个key可以用动态的值,比如executor
的地址:
CYLBlockExecutor *executor = [[CYLBlockExecutor alloc] initWithBlock:block];
const void * key = &executor;
objc_setAssociatedObject(self,
key,
executor,
OBJC_ASSOCIATION_RETAIN);
这样可以避免这个问题。
以上就是我的一点想法,仅供作者参考。
兄弟,你是不是搞错了什么?