如果我在方法中使用指令@synchronized,并且该方法有一个返回值BOOL或NSString,我可以使用它吗?
@synchronized(self) {
if (![self hasSource]) {
*source = nil;
return YES;
}
}
return NO;
=== OR ====
@synchronized(self) {
if (![self hasSource]) {
*source = nil;
return YES;
}
return NO;
}
答案 0 :(得分:3)
在您发布的代码中,两者都有效,因为两个线程同时尝试访问同步代码不会影响返回值。
如果返回值可能受到另一个线程的影响,您会希望同步块中有return
。
答案 1 :(得分:1)
好的我不确定,但在我看来,我会认为前一个例子是整个操作受@synchronize指令保护。
当然,我会毫无疑问地在我的脑海中播种,以这种方式编码。