0
我从另一家公司接手的项目和分配值时可变我经常看到的这部分代码:保留周期关注
// interface:
@property NSArray *foos;
// somewhere in implementation:
BOOL foosExist = ^BOOL {
return self.foos.count > 0; // self inside block
}();
而且通过基础变量_foos
内块引用到foos
属性时,编译器要求:
块隐含地保留“自我”;明确提及“自我”以表明这是预期的行为。
这个自己内部的块是否真的创建了保留循环?如果不是,为什么?有人可以详细说明吗?
为什么创建一个块只能立即运行呢? – newacct
@newacct我相信它的设计是为了提高可读性并降低对象的可变性(在块的范围之外)。块大多包含比5更多的LoC。 – Neru