Where to dealloc pickerview?
在模态视图中,我有一个在 viewDidLoad.
中分配和初始化的 UIPickerView
它在 dealloc 中与此视图中使用的其他对象一起被释放。
这是释放我的选择器的错误方式吗?为什么在模式视图被关闭后需要访问它,因为错误消息似乎在暗示?
僵尸日志错误是:
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)]; // setup the data source and delegate for this picker mcPickerView.showsSelectionIndicator = YES; – (void)dealloc |
- 请显示您的 viewDidLoad 和 dealloc 代码
viewDidLoad 中分配的任何内容:应该在 viewDidUnload 中释放,而不是释放。这是因为 viewDidLoad 和 viewDidUnload 在对象的生命周期中可能会被调用多次。 Dealloc 在对象的生命周期中只被调用一次。
在你的dealloc 方法中,你的[mcPickerView dealloc] 可能也为你dealloc\\’d mcPickerDataSource,因为mcPickerView 持有对mcPickerDataSource 的引用。更改您的 dealloc 方法以释放除 super 之外的所有内容应该可以解决问题。
你应该只在 super 上调用 dealloc。其他一切都应该释放。
这个答案将解释原因:
iPhone SDK:Dealloc 与 Release?
来源:https://www.codenong.com/6237844/