从类别中创建的按钮选择器调用已释放的方法

时间:2013-04-11 01:35:12

标签: ios objective-c exc-bad-access objective-c-category

我有一个类的类别,它创建一个按钮,使用以下选项正确初始化

[cancelButton addTarget:self action:@selector(cancelReconnect:) forControlEvents:UIControlEventTouchUpInside];

然后在同一category.m文件中我有方法

-(void)cancelReconnect{ NSLog(@"here!"); }

当在导入导入类别的类的viewcontroller中按下按钮时,我得到一个EXC_BAD_ACCESS,看起来我的方法/类似乎已经发布了。

如果我在viewcontroller中放置相同的cancelReconnect方法,其中'self'将是。这是相同的结果。

我的addTarget是否正确?是我的选择器方法被释放?怎么解决这个问题?

请注意我的自定义类'.h文件中的toolBarItems数组很强,但我不知道数组中的按钮是否正确。 View Controller是否保留了指向Class类别方法的强指针

1 个答案:

答案 0 :(得分:3)

你犯了一个常见的错误。您的实际方法名为cancelReconnect,但您告诉按钮选择器名为cancelReconnect:(注意冒号)。

将您的方法更改为:

- (void)cancelReconnect:(UIButton *)button {
    NSLog(@"here!");
}