0

我有一個屬性(原子,保留)NSString *標識符可以從多個線程讀取。因此,這是使其線程safe-使屬性線程安全

- (NSString *)identifier 
    { @synchronized(self) 
     { 
      return [_identifier retain] autorelease]; 
     } 

    } 

- (NSString *)identifier 
     { @synchronized(identifier) 
      { 
       return [_identifier retain] autorelease]; 
      } 

     } 

逸岸正確的方法,我想知道的關鍵參數的目的是@synchronize(鍵)。感謝您的幫助。

+0

在這種情況下,「線程安全」是什麼意思?只是它在訪問時不會崩潰,或者它有一些特殊的線程相關的功能? – 2014-10-09 14:41:10

+1

帶有(默認)'atomic'屬性的自動生成的getter將做正確的事情;你爲什麼自己產生吸氣劑? – Droppy 2014-10-09 14:44:19

+0

@JoachimIsaksson,通過線程安全的我的意思是數據的完整性。@ Droppy原子不保證線程安全。 – russell 2014-10-09 15:23:47

回答

0

@synchronized的參數是發生同步的對象。其他@synchronized(self)與同一對象將停止,而另一個@synchronized(self)正在執行。

您可能想要發佈實際編譯的代碼。這會告訴你,第二個實際上並沒有編譯。