有很好的文档证明@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。有谁知道他们是否这样做?
答案 0 :(得分:3)
Apple的文档非常擅长的一件事是指定完全合同是什么。在这种情况下,the relevant part of the docs仅表示使用对象级锁定锁定它。请注意,它没有说哪个锁定它,因此不能假设它与@synchronized(self)
具有相同的锁定机制。 (很可能不是。)