我知道有很多类似的问题被问到,这就是为什么我在发布这个问题时犹豫不决,但我找不到任何能够完全回答我问题的问题:
当我使用@property
和@synthesize
时,@synthesize
是否负责释放正在设置的对象的原始值?即如果我有:
@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];
}
或者我必须以某种方式照顾自己发布原始物品?
感谢您的澄清!
答案 0 :(得分:2)
答案是肯定的。为您生成了Setter和getter,并且做得很好,让您远离内存管理:
-(void)setObject:(NSObject *)newObject {
if (object != newObject) {
[object release];
object = [newObject retain];
}
}
要释放您的对象,您可以致电:
[self setObject:nil];
答案 1 :(得分:1)
无需自行释放原始对象,但是,您仍需要在-dealloc
中清理内容。