若是随便点击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

相关文章
相关标签/搜索