iOSInterviewQuestions icon indicating copy to clipboard operation
iOSInterviewQuestions copied to clipboard

第8题,runtime实现weak属性的一点问题

Open liangdrime opened this issue 8 years ago • 1 comments

在第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);

这样可以避免这个问题。

以上就是我的一点想法,仅供作者参考。

liangdrime avatar Jul 13 '16 01:07 liangdrime

兄弟,你是不是搞错了什么?

TheBloodElf avatar Jan 23 '19 11:01 TheBloodElf