有关使用@property @synthesize释放对象的问题

时间:2011-08-17 04:41:48

标签: objective-c ios memory-management getter-setter

我知道有很多类似的问题被问到,这就是为什么我在发布这个问题时犹豫不决,但我找不到任何能够完全回答我问题的问题:

当我使用@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];
}

或者我必须以某种方式照顾自己发布原始物品?

感谢您的澄清!

2 个答案:

答案 0 :(得分:2)

答案是肯定的。为您生成了Setter和getter,并且做得很好,让您远离内存管理:

-(void)setObject:(NSObject *)newObject {
  if (object != newObject) {
    [object release];
    object = [newObject retain];
  }
}

要释放您的对象,您可以致电:

[self setObject:nil];

答案 1 :(得分:1)

无需自行释放原始对象,但是,您仍需要在-dealloc中清理内容。