我想知道在决定 ObjectiveC 中的给定属性是否应该是一个时,您是否遵循一个经验法则retain
or copy
?
你如何决定应该是哪一个?
通常你使用copy
为了安全起见,具有可变变体的类,例如NSString
, NSArray
、其他集合类等。要了解原因,请考虑这里发生的情况......
曾几何时,
@interface MyClass : NSObject
@property (retain) NSString *happyString;
- (void)rejoice;
@end
后来有一天,
- (void)bigBadMethod {
MyClass *myObject = [[[MyClass alloc] init] autorelease];
NSMutableString *theString = [NSMutableString stringWithString:@"I'm happy!"];
myObject.happyString = theString; // this is allowed because NSMutableString inherits from NSString
[myObject rejoice]; // prints "I'm happy!"
突然间就...
[theString setString:@"BRAAAAIIINNNSSSSS"];
[myObject rejoice]; // prints "BRAAAAIIINNNSSSSS"
}
你不会想要那样的,是吗?所以使用@property (copy)
如果你不想在你不看的时候被变异!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)