@property(保留)是否需要发布?

时间:2009-11-23 12:33:58

标签: objective-c cocoa

下面是三个代码片段,前两个是两个对象的接口以及一些@property命令。请注意,这只是我的学习,它不是一个应用程序的一部分只是一个小测试程序。

在第二个@property中添加(保留)后,我注意到当我的程序退出时,我的机器对象漏了,我做的就是在Artist对象dealloc中添加一个版本,这听起来不错吗?

@interface Machine : NSObject
{
    NSString *name;
    NSString *type;
    NSString *os;
}

@interface Artist : NSObject
{
    NSString *name;
    Machine *system;
}
@property(copy) NSString *name;
@property(retain) Machine *system;
@end

// DEALLOC IN @implementation Artist
-(void)dealloc {
    NSLog(@"_deal: %@", self);
    [system release];
    [super dealloc];
}

加里

3 个答案:

答案 0 :(得分:4)

如果您的目标是Mac OS X,最好的答案是打开垃圾收集并删除-dealloc方法。

要回答具体问题,您需要在release方法中name system-dealloc

答案 1 :(得分:2)

每次调用retain或alloc方法时,必须手动调用release。

答案 2 :(得分:0)

是的,将其设置为nil或根据操作系统调用release。