是否有必要在Objective-C类中添加dealloc方法?

时间:2011-09-10 23:18:20

标签: objective-c ios dealloc

如果创建了UIviewController子类,则会自动为您创建方法'dealloc'。

- (void)dealloc{}

但是,当我创建一个Objective-C类时,该方法不会自动创建。是否有必要添加dealloc方法以便我可以在类中释放属性?特别是如果我将它们保留在头文件中?

例如,在我的Objective-C类头文件中,我有

@interface ClassA : NSObject 
{
    NSString *someProperty;
    UINavigationController *navcon;
}

@property (nonatomic, retain) NSString *someProperty;
@property (nonatomic, retain) UINavigationController *navcon;

我是否需要手动创建dealloc方法来释放属性,如下所示?

-(void)dealloc
{
    [someProperty release];
    [navcon release];
}

2 个答案:

答案 0 :(得分:6)

是的,你必须。

dealloc在您的对象被销毁之前被调用,并将其内存返回给操作系统。如果它保留在其他对象上,例如在你的情况下,那些对象也很重要。

这就是为什么你需要覆盖dealloc并释放你持有的任何资源。

某些Xcode模板可能会或可能不会为您提供dealloc的示例实现这一事实无关紧要。

答案 1 :(得分:1)

您负责释放视图控制器的nib文件中的所有顶级对象。 -dealloc是一个常见的地方。