gpt4 book ai didi

ios - 我应该为对象中的 (NSString *) 属性使用 @property(nonatomic,copy) 还是 @property(nonatomic,strong)?

转载 作者:IT王子 更新时间:2023-10-29 08:14:56 25 4
gpt4 key购买 nike

@interface PaneBean : NSObject

@property(nonatomic,copy) NSString *name;
@property(nonatomic,copy) NSString *type;
@property(nonatomic,assign) NSInteger width;
@end

我有一个 PaneBean,如上所示。

我应该使用 @property(nonatomic,copy) 还是 @property(nonatomic,strong) 作为我的 (NSString *) name ?它们有什么区别?

为 NSInteger 写 'assign' 是否正确?

感谢任何帮助。提前致谢!

最佳答案

'copy' 将导致该属性的 setter 创建对象的副本,并且在其他方​​面与 strong 相同。您将使用它来确保如果有人将您的属性设置为可变字符串,然后改变该字符串,您仍然拥有原始值。如果字符串不可变,Cocoa 会静静地优化复制操作,这很好:)

'strong' 将使该属性的值保持有效,直到它被设置为其他值。如果您希望 传入的可变字符串从您的下方改变(并非不可能,但并非所有常见的事情都需要),那么 strong 将是正确的做法。通常 strong 对于表示比简单“值”更复杂的东西的对象更有用(即不是 NSString、NSNumber、NSValue 等)。

'assign' 是整数的默认(实际上也是唯一)可能设置。不能像对象一样保留或复制整数。

关于ios - 我应该为对象中的 (NSString *) 属性使用 @property(nonatomic,copy) 还是 @property(nonatomic,strong)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com