若是隨便點擊ViewController中關聯的動做什麼都沒作的button出現崩潰現象......

在iOS開發中用代碼寫界面時,有時遇到:一個控制器中有一個button,關聯的動做裏面什麼都沒作,可是一點擊就直接崩到main函數裏面,使用全局的斷點也顯示不出崩潰緣由,那麼多是下面這種狀況: ide

1.在主視圖MainViewController中添加了一個子視圖: 函數

MainViewController.m

ViewController1 *viewController1 = [[ViewController1 alloc] init];
[self.view addSubview:viewController1.view];

ViewController1.m

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setTitle:@"音量" forState:UIControlStateNormal];
btn.frame = CGRectMake(100, 100, 50, 50);
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
[self.view btn];

- (void)clickBtn:(id)sender
{
    NSLog(@"test");
}

當你點擊Btn的時候就會出現崩潰的現象,並且你一時間很難定位崩潰的代碼,那麼極有可能就是相似我上面的這種狀況,在viewController1的view被添加後,它本身自己沒有被retain,因此被釋放了,而當你點擊Btn的時候,接收消息的剛好是viewController自己,而不是它的view,因此就致使了崩潰。 spa

 解決辦法:能夠本身手動的retain/release viewController1,也能夠把viewController1做爲成員變量存在MainViewController中。 code

相關文章
相關標籤/搜索