Jam*_*sev 4 memory-management objective-c
在确定ObjectiveC中的给定属性是否应该是a retain或者copy?时,我想知道你是否遵循经验法则?
你如何决定它应该是什么?
jtb*_*des 10
通常,您可以使用copy具有可变变体的类来安全,例如NSString,NSArray其他集合类等.要了解原因,请考虑此处发生的情况......
很久以前,
@interface MyClass : NSObject
@property (retain) NSString *happyString;
- (void)rejoice;
@end
Run Code Online (Sandbox Code Playgroud)
后来有一天,
- (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!"
Run Code Online (Sandbox Code Playgroud)
突然间就...
[theString setString:@"BRAAAAIIINNNSSSSS"];
[myObject rejoice]; // prints "BRAAAAIIINNNSSSSS"
}
Run Code Online (Sandbox Code Playgroud)
你不会想要的,是吗?所以,@property (copy)如果你不想在你不看的时候变异,请使用!
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |