合成访问器中的[_internal lock]是否与@synchronized(self)相同?

时间:2010-07-12 15:39:08

标签: iphone objective-c cocoa

有很好的文档证明@synthesize原子设置/ getter是用“某事”实现的:

{
    [_internal lock]; // lock using an object-level lock
    id result = [[value retain] autorelease];
    [_internal unlock];
    return result;
}

我有这种情况,我想原子地访问两个属性(即没有解锁其间的锁),所以我的第一直觉是使用@synchronized(self) - 但是我一直无法找到任何说明@synchronized(self)使用相同的锁作为原子getter / setter。有谁知道他们是否这样做?

1 个答案:

答案 0 :(得分:3)

Apple的文档非常擅长的一件事是指定完全合同是什么。在这种情况下,the relevant part of the docs仅表示使用对象级锁定锁定它。请注意,它没有说哪个锁定它,因此不能假设它与@synchronized(self)具有相同的锁定机制。 (很可能不是。)