带有 @property 非原子和保留的变量是否应该显式释放。
@interface MyScreenViewController : UIViewController <UIWebViewDelegate> {
UIWebView* greetingView;
}
@property(nonatomic, retain) IBOutlet UIWebView* greetingView;
- (void)dealloc {
[greetingView release];
}
delloc 方法中的release 是必需的吗???
当然。是的,你应该通过保留、复制来释放你的属性,而不是分配。您在 viewDidUnload 中将该属性设置为 Nil。
- (void)viewDidUnload {
[super viewDidUnload];
self.greetingView = nil;
}
- (void)dealloc {
[greetingView release],greetingView = nil;
[super dealloc];
}
内存管理请参考 UIViewController 类参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html
内存是 iOS 中的关键资源,视图控制器提供内置支持,以在关键时刻减少内存占用。 UIViewController 类通过其 didReceiveMemoryWarning 方法提供一些对内存不足情况的自动处理,该方法会释放不需要的内存。在 iOS 3.0 之前,此方法是释放与自定义视图控制器类关联的额外内存的唯一方法,但在 iOS 3.0 及更高版本中,viewDidUnload 方法可能更适合大多数需求。
当发生内存不足警告时,如果 UIViewController 类知道可以稍后重新加载或重新创建视图,则它会清除其视图。如果发生这种情况,它还会调用 viewDidUnload 方法,让您的代码有机会放弃与视图层次结构关联的任何对象的所有权,包括使用 nib 文件加载的对象、在 viewDidLoad 方法中创建的对象以及延迟创建的对象运行时并添加到视图层次结构中。通常,如果您的视图控制器包含插座(包含 IBOutlet 关键字的属性或原始变量),则应使用 viewDidUnload 方法放弃这些插座或您不再需要的任何其他视图相关数据的所有权。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)