我知道已经有人问过很多类似的问题,这就是为什么我对发布这篇文章犹豫不决,但我找不到任何能准确回答我的问题的内容:
当我使用@property
和@synthesize
时,@synthesize
是否负责释放所设置对象的原始值? IE。如果我有:
@interface SomeClass:NSObject
{
NSObject *object;
}
@property (nonatomic, retain) NSObject *object;
@end
@implementation SomeClass
@synthesize object;
@end
这是否等同于获得一个看起来像这样的 setter 方法?
-(void)setObject:(NSObject *)newObject
{
[object release];
object = [newObject retain];
}
还是我必须以某种方式自行释放原始对象?
感谢您的澄清!
最佳答案
答案是肯定的。 Setter 和 getter 是为你生成的,做得很好,让你远离内存管理:
-(void)setObject:(NSObject *)newObject {
if (object != newObject) {
[object release];
object = [newObject retain];
}
}
要释放您的对象,您可以调用:
[self setObject:nil];
关于objective-c - 关于使用@property @synthesize 释放对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7088043/