[英]Objective-C: Are blocks defined inside of methods strong or weak?
我有這樣的情況:
- (void)someMethod
{
__weak typeof(self) weakSelf = self;
void (^myBlock1)(void) = ^{
// ... do stuff
};
void (^myBlock2)(void) = ^{
[weakSelf doSomeHeavyNetworkCall2:^{
myBlock1();
}];
};
[self doSomeHeavyNetworkCall1:^{
myBlock2();
}];
}
在這種情況下,myBlock1 和 myBlock2 的生命周期是什么? 我應該像這樣檢查 nil 嗎?
void (^myBlock2)(void) = ^{
[weakSelf doSomeHeavyNetworkCall2:^{
if (myBlock1) {
myBlock1();
}
}];
};
[self doSomeHeavyNetworkCall1:^{
if (myBlock2) {
myBlock2();
}
}];
另外,如果我將整個someMethod
包裝在@synchronized
,我是否保證周圍有塊?
在 Objective-C 中,局部變量默認是強的,所以myBlock1
和myBlock2
是強的。 不需要if (myBlock1)
和if (myBlock2)
檢查。
用@synchronized
包裝someMethod
的內容對這些變量的生命周期沒有影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.