我一直在研究一个应用程序,我读过的那本书说这些语句都放在viewDidUnload和dealloc方法中。还有什么其他信息?我的程序中有按钮和标签。我需要为他们做些什么吗?
我想要一个高效运行的应用程序。
这是我的代码:
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.doublePicker = nil;
self.color = nil;
self.choice = nil;
[super viewDidUnload];
}
- (void)dealloc {
[doublePicker release];
[color release];
[choice release];
[super dealloc];
}
答案 0 :(得分:2)
您应该只在viewDidUnload中发布您的IBOutlets和其他UI元素。您在视图控制器(以及IBOutlets)中分配的所有其他数据应该在dealloc方法中释放。这是因为视图可以在视图控制器的生命周期中多次加载和卸载。例如,如果视图不可见,则可以卸载视图,但是视图后面的数据(在视图控制器中)仍然需要保留在内存中。当不再需要视图及其控制器时,将调用dealloc方法。
答案 1 :(得分:1)
您发布的代码是正确的,但您还应该为您的商店创建属性,例如:
你的.h文件中的:
@property (nonatomic, retain) UIPickerView *doublePicker;
@property (nonatomic, retain) UIPickerView *color;
// ...etc
你的.m文件中的:
@synthesize doublePicker;
@synthesize color;
// ...etc
关于这种技术存在一些争议(明确地保留你的网点并像这样发布它们),但这是Apple推荐的技术:
答案 2 :(得分:0)
一般规则是,您要对release
或alloc
的任何内容致电init
。您在xib中创建的组件不需要发布。