Dealloc Block Executor【你好 block,
2015-12-28 本文已影响1430人
iOS程序犭袁
CYLDeallocBlockExecutor【你好 block,再见 dealloc】
Hello block,byebye dealloc!一行代码代替dealloc完成“self-manager”
enter image description here直接从看图里的第8步骤开始看:
CYLDeallocBlockExecutor 所起作用的地方从第8步骤开始。
模拟weak修饰的property的生命周期
我曾经在我的一篇博文中使用过类似的策略:
下面做下简要叙述:
我们都知道@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