iPhone方法问题(解除锁定viewDidUnload)
我一直在开发一个应用程序,我读的那本书说要把这些语句放到viewDidUnload和dealloc方法中。还有什么其他信息应该放在这里?我的程序中有按钮和标签。我需要为他们做些什么吗 我想要一个高效运行的应用程序 这是我的代码:iPhone方法问题(解除锁定viewDidUnload),iphone,objective-c,ios,iphone-sdk-3.0,ios4,Iphone,Objective C,Ios,Iphone Sdk 3.0,Ios4,我一直在开发一个应用程序,我读的那本书说要把这些语句放到viewDidUnload和dealloc方法中。还有什么其他信息应该放在这里?我的程序中有按钮和标签。我需要为他们做些什么吗 我想要一个高效运行的应用程序 这是我的代码: - (void)viewDidUnload { // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; self.do
- (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];
}
一般规则是,您希望对
alloc
或init
的任何内容调用release
。您在xib中创建的组件不需要发布。您应该只在viewDidUnload中发布您的IBOutlets和其他UI元素。您在视图控制器(以及IBOutlets)中分配的所有其他数据都应该在dealloc方法中释放。这是因为在视图控制器的生命周期内,可以多次加载和卸载视图。例如,如果视图不可见,则可以卸载该视图,但其后面的数据(在视图控制器中)仍需要保留在内存中。当不再需要视图及其控制器时,将调用dealloc方法。您发布的代码是正确的,但是您还应该为您的插座创建属性,如下所示:
在.h文件中:
@property (nonatomic, retain) UIPickerView *doublePicker;
@property (nonatomic, retain) UIPickerView *color;
// ...etc
在.m文件中:
@synthesize doublePicker;
@synthesize color;
// ...etc
关于这项技术(明确地保留你的插座并像这样释放它们)有一些争论,但这是苹果公司推荐的技术:
我一直认为您必须释放任何属性设置为保留的IBOutlet。视图加载使用KVC连接IBOutlets,并使用一个属性(如果可用)?嗯。。。不太确定。。。我只记得“保留”、“分配”和“复制”。。。但是你可以找到很多很好的老文章来解释它,如果你只搜索一点
init
不会增加retain计数,allocWithZone:
会增加,还有retain
和copyWithZone:
。你应该释放你的笔尖插座。