Objective c viewDidUnload后是否调用dealloc?
一个简短的问题,在viewDidUnload之后,dealloc是否也会被调用?我问的是关于pickerData,据我所知,当调用dealloc时,变量将被释放。我提问的原因是,我在一本书中注意到,作者在viewDidUnload中将pickerData设置为零。这是无害的过度杀戮,甚至是良好的做法,还是没有一种情况下,一个不会被称为没有另一个 接口:Objective c viewDidUnload后是否调用dealloc?,objective-c,cocoa-touch,Objective C,Cocoa Touch,一个简短的问题,在viewDidUnload之后,dealloc是否也会被调用?我问的是关于pickerData,据我所知,当调用dealloc时,变量将被释放。我提问的原因是,我在一本书中注意到,作者在viewDidUnload中将pickerData设置为零。这是无害的过度杀戮,甚至是良好的做法,还是没有一种情况下,一个不会被称为没有另一个 接口: @interface SingleViewController : UIViewController { NSArray *picker
@interface SingleViewController : UIViewController {
NSArray *pickerData;
}
@property(nonatomic, retain) NSArray *pickerData;
@end
实施:
-(void)viewDidUnload {
[self setSinglePicker:nil];
[self setPickerData:nil];
[super viewDidUnload];
}
-(void)dealloc {
NSLog(@"Here");
[singlePicker release];
[pickerData release];
[super dealloc];
}
@end
gary否,viewDidUnload:在释放UIViewController的视图时调用。dealloc:仅在UIViewController的引用计数变为零时调用。作者的代码是良好的实践 作者使用合成方法将ivar设置为nil,这意味着这些ivar是发送发布消息的。viewDidUnload:是您应该释放任何可以轻松重新创建的对象或内存的地方。作者本质上是说,“我不再需要对这些东西的引用,减少retain计数,希望这会释放一些内存。如果必要的话,我会在viewDidLoad:”中重新创建它
如果dealloc被调用,则将ivars设置为nil不会产生任何后果,因为Objective-C运行时会处理到nil的消息。当UIViewController引用计数变为零时,即当UIViewController被释放时。我没有意识到这一点,很高兴知道和很好的理由都有[self-setPickerData:nil];&[pickerData发布];