在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