我知道有人问过许多类似的问题,这就是为什么我犹豫不决地发布了这个问题,但是我找不到能确切回答我问题的任何东西:

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


还是我必须以某种方式自己照顾释放原始对象?

感谢您的澄清!

最佳答案

答案是肯定的。 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/

10-11 23:03
查看更多