我有这样的情况:
- (void)someMethod
{
__weak typeof(self) weakSelf = self;
void (^myBlock1)(void) = ^{
// ... do stuff
};
void (^myBlock2)(void) = ^{
[weakSelf doSomeHeavyNetworkCall2:^{
myBlock1();
}];
};
[self doSomeHeavyNetworkCall1:^{
myBlock2();
}];
}
在这种情况下,myBlock1和myBlock2的生命周期是多少?我应该这样检查零吗?
void (^myBlock2)(void) = ^{
[weakSelf doSomeHeavyNetworkCall2:^{
if (myBlock1) {
myBlock1();
}
}];
};
[self doSomeHeavyNetworkCall1:^{
if (myBlock2) {
myBlock2();
}
}];
另外,如果我将整个someMethod
包裹在@synchronized
中,我保证会有块吗?
答案 0 :(得分:2)
默认情况下,Objective-C中的局部变量很强,因此myBlock1
和myBlock2
很强。无需进行if (myBlock1)
和if (myBlock2)
检查。
用someMethod
包裹@synchronized
的内容对这些变量的生命周期没有影响。