美文网首页iOS语法技巧iOS进阶iOS Tips
Dealloc Block Executor【你好 block,

Dealloc Block Executor【你好 block,

作者: iOS程序犭袁 | 来源:发表于2015-12-28 15:15 被阅读1430次

    CYLDeallocBlockExecutor【你好 block,再见 dealloc】

    Hello block,byebye dealloc!一行代码代替dealloc完成“self-manager”

    enter image description here

    直接从看图里的第8步骤开始看:
    CYLDeallocBlockExecutor 所起作用的地方从第8步骤开始。

    模拟weak修饰的property的生命周期

    我曾经在我的一篇博文中使用过类似的策略:

    全文见: 《runtime 如何实现 weak 属性》

    下面做下简要叙述:

    我们都知道@property的 weak 属性:

    weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同 assign 类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。

    那么如何让不使用weak修饰的@property,拥有weak的效果?

    代码如下所示:

    - (void)setObject:(NSObject *)object
    {
       objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN);
       [object cyl_executeAtDealloc:^{
           _object = nil;
       }];
    }
    

    这样就达到了当 objet 为 nil 时,自动将 self.object 置 nil 的目的,从而就模拟了weak修饰的property的生命周期。

    (更多iOS开发干货,欢迎关注 微博@iOS程序犭袁


    Posted by 微博@iOS程序犭袁
    原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

    相关文章

      网友评论

      本文标题:Dealloc Block Executor【你好 block,

      本文链接:https://www.haomeiwen.com/subject/qcnbhttx.html