NSString属性:复制还是保留?假设我有一个叫SomeClass带着string财产名称:@interface SomeClass : NSObject{
NSString* name;}@property (nonatomic, retain) NSString* name;@end据我所知,这个名字可能被指定为NSMutableString在这种情况下,这可能导致错误的行为。对于一般的字符串,是吗?总使用copy属性而不是retain?“复制”财产是否以任何方式比“保留”财产效率低?
3 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
复制
扬帆大鱼
TA贡献1799条经验 获得超9个赞
对于一般的字符串来说,使用Copy属性而不是RELARE总是一个好主意吗?
是的-通常总是使用Copy属性。
“复制”财产是否以任何方式比“保留”财产效率低?
如果您的属性正在被传递,则 NSString实例,答案是“ 不“-复制的效率不亚于保留。
(它的效率并不低,因为NSString足够聪明,可以不实际执行副本。)如果您的属性被传递给 NSMutableString实例那么答案是“ 是“-复制不如保留有效。
(效率较低,因为必须进行实际的内存分配和复制,但这可能是一件可取的事情。)一般来说,“复制”属性可能会降低效率-但是通过使用 NSCopying
协议,它可以实现一个类,它是“同样有效的”复制和它是保留。 NSString实例就是一个例子。
一般情况下(不只是NSString),什么时候我应该使用“拷贝”而不是“保留”?
copy
NSCopying
).
retain
但是,我写我的课是不变的-我就不能“保留”它吗?
copy
NSCopying
copy
类的其他用户在使用 copy
.这个 copy
注释使您自己的代码更易于维护- copy
注释表明,您实际上不需要担心此对象在其他地方更改状态。
- 3 回答
- 0 关注
- 378 浏览
添加回答
举报
0/150
提交
取消