使属性线程安全

时间:2014-10-09 14:33:16

标签: objective-c cocoa cocoa-touch memory-management automatic-ref-counting

我有一个属性(atomic,retain)NSString *标识符,可以从多个线程中读取。那么这是使其线程安全的正确方法 -

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

   }

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

       }

事实上,我想知道关键参数的用途是@synchronize(key)。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

@synchronized的参数是发生同步的对象。每个其他@synchronized(self)与同一个对象将停止,而另一个@synchronized(self)正在执行。

您可能希望发布实际编译的代码。那会告诉你第二个实际上并没有编译。