在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