2010-07-12 29 views
2

这是相当有据可查的@synthesize原子设置/干将与“东西”,像这样实现的:在合成访问器中的[_internal lock]与@synchronized(self)相同吗?

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

我的情况,我想原子访问两个属性(即不其间开启锁) ,所以我的第一个直觉是使用@synchronized(self) - 但是我一直无法找到任何说如果@synchronized(self)使用相同的锁作为一个原子吸气/设置。有谁知道他们是否会这样做?

+0

检查答案:http://stackoverflow.com/questions/1215330/how-does-synchronized-lock-unlock-in-objective-c – Macmade 2010-07-12 15:44:48

+0

谢谢,这是肯定有趣的背景阅读,但除非我错过了,它不回答我的问题?它证实了@syncronised不使用NSLock,但我看不到什么原子getters/setter使用的描述。 – JosephH 2010-07-13 07:54:26

回答

3

苹果公司的文档非常擅长的事情之一是指定正好合同是什么。在这种情况下,the relevant part of the docs只表示它使用对象级别锁定进行锁定。请注意,它不会说哪个锁定它,所以你不能假设它是与@synchronized(self)相同的锁定机制。 (这可能不是)

+0

虽然这实际上并不能回答我的问题,但是我指出我提出了错误的问题,这是一种非常礼貌的方式。正如你所说,重要的是我能否依靠它们与Apple升级操作系统是同一件事,而不管它们是否是同一件事。谢谢! – JosephH 2010-08-11 19:45:06

相关问题