
@interface SomeClass : NSObject{ Nsstring* name;}@property (nonatomic,retain) Nsstring* name;@end 我知道名称可能会分配一个NSMutableString在这种情况下,这可能会导致错误的行为。
>对于字符串一般来说,使用copy属性而不是retain是一个好主意吗?
>是“复制”属性以任何方式比这种“保留”属性效率低吗?
这就是为什么你想这样做:
NSMutableString *somename = [NSMutableString stringWithString:@"Chris"];Person *p = [[[Person alloc] init] autorelease];p.name = somename;[somename setString:@"Debajit"];
Person.name属性的当前值将根据属性是否声明保留或复制而有所不同 – 如果属性标记为retain,则为@“Debajit”,如果属性标记为复制,则为@“Chris”。
因为在几乎所有情况下,你想要防止突变后面的对象的属性,你应该标记表示它们的属性的属性。 (如果你自己编写setter而不是使用@synthesize你应该记住实际上使用copy而不是retain。)
总结以上是内存溢出为你收集整理的objective-c – NSString属性:copy或retain?全部内容,希望文章能够帮你解决objective-c – NSString属性:copy或retain?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)