如果创建了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];
}
答案 0 :(得分:6)
是的,你必须。
dealloc
在您的对象被销毁之前被调用,并将其内存返回给操作系统。如果它保留在其他对象上,例如在你的情况下,那些对象也很重要。
这就是为什么你需要覆盖dealloc
并释放你持有的任何资源。
某些Xcode模板可能会或可能不会为您提供dealloc
的示例实现这一事实无关紧要。
答案 1 :(得分:1)
您负责释放视图控制器的nib文件中的所有顶级对象。 -dealloc
是一个常见的地方。