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