我搜索了很多,但只对non-atomic
,retain
,copy
参数的定义有所区别。我想要一些我尚未得到的确切解释。
请举例说明:为什么我们使用它们以及它们如何工作以及引用计数的作用?
答案 0 :(得分:1)
在非原子中,如果某个setter活动在任何其他线程上进行,则不保证从getter / setter返回整个值。
因此,nonatomic比原子快得多,而且从不线程安全
在保留中明确声明您要维护对象的引用,或者您希望成为该对象的所有者,并且必须在它被取消分配之前释放它。它会将引用计数增加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
会创建一个具有自己保留计数的新计数。