使用KZColorPicker与ARC进行EXC_BAD_ACCESS

时间:2013-09-26 23:03:28

标签: ios objective-c automatic-ref-counting exc-bad-access color-picker

我正在尝试将颜色选择器合并到我的应用中。我已经从https://github.com/alexrestrepo/KZColorPicker

将KZColorPicker库复制到我的项目中

问题是该库显然是在不使用ARC的情况下创建的。我正在使用ARC,因此我遇到了大量错误,然后我将所有发布错误的发布语句注释掉。

在实例化“KZDefaultColorViewController”之后,它将转到ViewDidLoad语句,但是给我一个“EXC_BAD_ACCESS code = 1”错误。任何想法???

这是我启动颜色选择器屏幕的IBAction:

- (IBAction)selectColor1:(id)sender
{
 DebugLog(@"Change Color 1 Intiated");

// Use this code to push to the color picker
 KZDefaultColorViewController *pickerController = [self.storyboard instantiateViewControllerWithIdentifier:@"ColorViewController"];
 pickerController.navigationItem.title = @"Choose Color 1";
 [self.navigationController pushViewController:pickerController animated:YES];
}

然后它转到KZDefaultColorViewController的ViewDidLoad,看来我得到了EXC_BAD_ACCESS错误:

- (void)viewDidLoad {

 [super viewDidLoad];

 KZColorPicker *picker = [[KZColorPicker alloc] initWithFrame:self.view.frame];
 picker.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
 picker.selectedColor = self.selectedColor;
 picker.oldColor = self.selectedColor;
 [picker addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged];
 [self.view addSubview:picker];

}

1 个答案:

答案 0 :(得分:1)

在删除关于[_window release]的行后,我将此项目转换为arc;并且现在将IS_IPAD定义修复为0,没有问题。 (通过编辑菜单,在重构下,转换为Arc)

如果您将某些项目复制到您自己的项目中,则错误可能是由于未正确实现KZDefaultColorControllerDelegate,或者您在代码中缺少pickerChanged:方法或未首先转换为arc。评论发布声明不一定能解决所有电弧问题。