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

Zhe*_*hen 4 objective-c dealloc ios

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

- (void)dealloc{}
Run Code Online (Sandbox Code Playgroud)

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

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

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

@property (nonatomic, retain) NSString *someProperty;
@property (nonatomic, retain) UINavigationController *navcon;
Run Code Online (Sandbox Code Playgroud)

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

-(void)dealloc
{
    [someProperty release];
    [navcon release];
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*uys 6

是的,你必须.

dealloc在你的对象被彻底销毁之前调用它,并将其内存返回给操作系统.如果它保留在其他对象上,例如在您的情况下,那些对象也必须被释放.

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

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