有必要在Objective-C类中添加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];
}

你必须。

dealloc在对象被永久销毁并将其内存返回给操作系统之前被调用。如果它占用了其他对象,比如在您的情况下,将这些对象也释放是很重要的。

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

事实上,一些Xcode模板可能或可能不提供dealloc的样例实现是不相关的。

你负责释放视图控制器nib文件中的所有顶层对象。-dealloc是这样做的常见地方

最新更新