2010-07-12 48 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

相關問題