我试图了解下面的吸气剂中发生了什么,这是我到目前为止所了解的:
(1) getter 返回一个指向 NSString 对象的指针。(2) NSString 对象被保留,可能是因为我们刚刚给出了一个指向它的指针。(3) 自动释放?当 PlanetClass 实例被释放(释放)时,它何时激活?
// CLASS
@interface PlanetClass : NSObject {
NSString *planetName;
}
- (NSString *)planetName;
- (void)setPlanetName:(NSString *)value;
@end
// GETTER
- (NSString *)planetName{
return[[planetName retain] autorelease];
}
编辑:我认为我对实际保留和稍后发布的原因感到更加困惑。我的理解是,getter 只是返回了一个指向 nil 或已经存在的对象(即由 setter 设置)的指针释放,这只是一个故障保险,以防我后来忘记释放 NSString 对象?
实例变量planetName也在我的dealloc方法中释放(见下文)自动释放似乎也在做同样的事情,只是稍后池被耗尽时?
- (void)dealloc {
[planetName release];
[super dealloc];
}
干杯-加里-