2011-06-04 83 views
0

在模态视图中,我有一个在viewDidLoad中分配并初始化的UIPickerView。去哪里dealloc pickerview?

它被释放在dealloc与该视图中使用的其他对象。

这是一个不正确的方式释放我的选择器?为什么在模态视图被解散后需要访问它,因为错误信息似乎暗示着?

僵尸日志错误是:

-[UIPickerView release]: message sent to deallocated instance 0x5a441 

相关代码:

- (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]; 
} 
+0

请显示您的代码viewDidLoad和dealloc – jaminguy 2011-06-04 16:14:57

+0

添加了相关的代码 – Ayrad 2011-06-04 16:24:44

回答

1

在你的dealloc方法,您[mcPickerView dealloc]大概也dealloc'd mcPickerDataSource你因为mcPickerView持有至mcPickerDataSource引用。改变你的dealloc方法来释放一切,除了超级应该修复这个问题。

1

viewDidLoad中的任何alloc'd:应该在viewDidUnload中释放而不是释放dealloc。这是因为viewDidLoad和viewDidUnload可能会在对象的整个生命周期中被调用多次。在对象的生命周期中,Dealloc只被调用一次。