-5

我进行了很多搜索,但仅在non-atomic, retain,copy参数的定义上有所不同。我想要我还没有得到的确切解释。

请举例说明:我们为什么使用它们以及它们如何工作以及引用计数在其中的作用?

4

1 回答 1

1

nonatomic中,如果某些 setter 活动正在任何其他线程上进行,则不保证从 getter/setter 返回整个值。

因此,非原子比原子快得多,而且永远不是线程安全的


在显式保留状态下,您想维护对象的引用或者您想成为对象的所有者,并且您必须在释放它之前释放它。它将引用计数增加 1。

-(void)setString:(NSString*)newString{
     
    [newString retain];
     
    [string release];
       
    string = newString;
    
}

副本通常与字符串一起使用,因为制作原始对象的副本可确保在您使用它时不会更改它。

-(void)setString:(NSString*)newString{
 
      if(string!=newString){
                 
          [string release];
                 
          string = [newString copy];
               
     }
}

虽然retain只是增加一个对象的保留计数,但copy创建一个具有自己保留计数的新对象。

于 2013-03-11T09:55:27.060 回答