:避免了「在此塊強烈捕捉自我很可能會導致保留週期」每次我必須使用全局變量或財產這樣的塊中的時間信息
self.save = ^(){
if (isItSaving == NO) {
[self saveMyFile];
}
};
我不得不重寫這就像
BOOL *iis = isItSaving;
id myself = self;
self.save = ^(){
if (iis == NO) {
[myself saveMyFile];
}
};
或Xcode中會抱怨「在此塊強烈捕捉自我很可能會導致保留週期...
它抱怨甚至對布爾變量?
在塊之前重新聲明所有內容似乎是一個蹩腳的解決方案。
這是正確的方法嗎?有沒有一種優雅的方式?
這東西很醜。我正在使用ARC。
男人,這是醜陋的地獄。不得不重新宣佈一切......謝謝。 – SpaceDog
@MarkAmery是的,鏗鏘聲越來越多的問題。並且這是正確的,封閉對象的生命週期應至少延長到塊完成。編輯... –
@NikolaiRuhe *「封閉對象的生命週期應該至少延長到塊完成」* - 很好,我一開始並沒有注意到爲什麼在塊中創建一個強烈的'self'引用的任何原因會優於使用'__unsafe_unretained',但這個短語使得它非常清晰。如果你願意,甚至可以在你的答案中比較兩種方法。 –