用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
来源:互联网 发布:jquery.rotate.min.js 编辑:程序博客网 时间:2024/05/16 05:15
1、因为父类指针可以指向子类对象,使用copy的目的是为了让本对象的属性不受外界影响,使用copy无论给我传入是一个可变对象还是不可对象,我本身持有的就是一个不可变的副本.
2、如果我们使用是strong,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性.
copy此特质所表达的所属关系与strong类似。然而设置方法并不保留新值,而是将其“拷贝” (copy)。 当属性类型为NSString时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个NSMutableString类的实例。这个类是NSString的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。
0 0
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 用 @property 声明的 NSString (或 NSArray,NSDictionary) 经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?
- iOS 面试题~用@property声明NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 用@property声明的NSString, NSArray, NSDictionary 为什么要用copy ?
- NSString为什么要用copy关键字,如果用strong会有什么问题 OC中的深拷贝与浅拷贝
- iOS @property中的NSString, NSArray, NSDictionary属性为什么大多时候用copy而不用strong的原因
- NSString为什么要用copy关键字,用strong会有什么问题?
- iOS NSString,NSArray,NSDictionary声明属性关键字
- NSString 使用 copy 关键字和 strong 关键字修饰的异同
- NSString为什么用copy而不是strong,NSMutableString为什么用strong而不是用copy(或者NSArray及NSMutableArray等)
- iOS NSString,NSArray,NSDictionary的Copy属性使用
- iOS NSString,NSArray,NSDictionary的Copy属性使用
- 关于声明控件用weak和strong的问题&NSString用copy好还是strong
- 深入理解@property的关键字:weak,strong,copy,assign,unsafe_unretained
- OC中@property属性关键字的使用(assign/weak/strong/copy)
- Code Page Identifiers
- 局部内部类为什么只能访问final修饰的局部变量
- 努力奋斗
- 类型转换功能类Conveter
- iOS 属性传值失败原因
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- SG函数 多校Chess
- 监听电池电量之粘性广播
- 关于FREEMARKER的一些总结
- 日期功能类DateFunction
- APK--瘦身之路--减小软件大小
- SQL Server:字符串函数
- Git学习与训练
- 历史sql plan