我知道有人问过许多类似的问题,这就是为什么我犹豫不决地发布了这个问题,但是我找不到能确切回答我问题的任何东西:
当我使用@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/