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

Ios 以编程方式设置UIButton操作引发异常,ios,objective-c,uibutton,selector,Ios,Objective C,Uibutton,Selector,我删除了框架中定义的按钮的操作,并将其设置为自定义方法,它似乎抛出了一个异常。这是我的删除和添加代码: [_loginView.logInView.signUpButton removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside]; [_loginView.logInView.signUpButton addTarget:self action:@selector(customViewMethod)

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

[_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];

}
例外情况如下:


-[\uu NSCFDictionary customViewMethod]:发送到实例0x15691730的无法识别的选择器

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

假设您将self作为另一个类中按钮的按钮目标传递,并且假设错误指示按钮处理程序试图调用错误目标上的操作方法NSDictionary,赛尔夫在成为按钮的目标后被解约,这是一个很好的赌注。现在一些随机对象在同一个内存位置

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


如果是这样的话,你知道self很快就会被释放。您需要保留对它的强引用,以便不会过早取消分配。

请阅读更新的问题,对您的答案进行适当更改。您可以发布customViewMethod代码吗?@AaronWojnowski无需发布该代码。这与问题无关。赛尔夫怎么能成为一本词典?我的猜测是,在点击“注册”按钮之前,self被解除分配,因此操作最终被调用到错误的对象上。@rmaddy不确定。。。这就是为什么例外毫无意义。我没有任何代码会触发我的类的释放。向发布代码中的任何类self添加dealloc方法。然后在dealloc方法中设置断点。在点击按钮之前,请查看是否已到达断点。@rmaddy情况就是这样。谢谢你给我一个直截了当的回答。