如果创建了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
是这样做的常见地方