Where to dealloc pickerview?
在模态视图中,我有一个在
中分配和初始化的 UIPickerView
它在
这是释放我的选择器的错误方式吗?为什么在模式视图被关闭后需要访问它,因为错误消息似乎在暗示?
僵尸日志错误是:
1 | -[UIPickerView release]: message sent to deallocated instance 0x5a441 |
相关代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | - (void)viewDidLoad { [super viewDidLoad]; //navigation bar stuff here mcPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 244, 320, 216)]; mcPickerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; // setup the data source and delegate for this picker mcPickerDataSource = [[MCPickerDataSource alloc] init]; mcPickerView.dataSource = mcPickerDataSource; mcPickerView.delegate = mcPickerDataSource; mcPickerView.showsSelectionIndicator = YES; [self.view addSubview:mcPickerView]; } - (void)dealloc { [mc dealloc]; [mcPickerView dealloc]; [mcPickerDataSource dealloc]; [mcVal release]; [super dealloc]; } |
viewDidLoad 中分配的任何内容:应该在 viewDidUnload 中释放,而不是释放。这是因为 viewDidLoad 和 viewDidUnload 在对象的生命周期中可能会被调用多次。 Dealloc 在对象的生命周期中只被调用一次。
在你的dealloc 方法中,你的
你应该只在 super 上调用 dealloc。其他一切都应该释放。
这个答案将解释原因:
iPhone SDK:Dealloc 与 Release?