以编程方式设置UIButton操作会引发异常

时间:2014-08-01 03:57:47

标签: ios objective-c uibutton selector

我删除了框架中定义的按钮的操作并将其设置为自定义方法,它似乎抛出异常。这是我的删除和添加代码:

[_loginView.logInView.signUpButton removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];

[_loginView.logInView.signUpButton  addTarget:self action:@selector(customViewMethod) forControlEvents:UIControlEventTouchUpInside];

customViewMethod:

- (void)customViewMethod {

    [_loginView.view removeFromSuperview];

    [self.view addSubview:_signUpView.view];

}

以下是例外:

-[__NSCFDictionary customViewMethod]: unrecognized selector sent to instance 0x15691730

2 个答案:

答案 0 :(得分:3)

假设您将self作为另一个类中按钮的按钮目标传递,并且假设该错误指示按钮处理程序正在尝试在错误的目标上调用该操作方法({{1它是一个很好的选择,NSDictionary在成为按钮的目标后被解除分配。现在一些随机对象位于相同的内存位置。

这可以通过在您发布的代码中的任何类self上实施dealloc方法来确认。然后在点击按钮之前查看是否已达到此self

如果是这样,您知道dealloc即将被解除分配。你需要对它进行强有力的引用,以免它过早解除分配。

答案 1 :(得分:1)

您的查看属性self.view没有名为customViewMethod的方法。您可能希望将目标添加到self(视图控制器,而不是视图)。