我进行了很多搜索,但仅在non-atomic
, retain
,copy
参数的定义上有所不同。我想要我还没有得到的确切解释。
请举例说明:我们为什么使用它们以及它们如何工作以及引用计数在其中的作用?
我进行了很多搜索,但仅在non-atomic
, retain
,copy
参数的定义上有所不同。我想要我还没有得到的确切解释。
请举例说明:我们为什么使用它们以及它们如何工作以及引用计数在其中的作用?
在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
创建一个具有自己保留计数的新对象。