调用UIAlertView委托方法崩溃了

时间:2013-07-21 17:01:05

标签: ios delegates uialertview

我有一个viewController类A,它有一个创建UIAlertView并实现UIAlertView Delegate方法的方法,以及一个用于处理日志记录和网络的NSObject模型类B.在B类中,只需分配一个A类实例,然后调用A的方法。警报视图正常显示,但当我点击“确定”按钮时,它只是崩溃了。我想点击“确定”按钮重新打开键盘让用户在失败后继续登录。 (在头文件中声明了UIAlertView协议。)

在viewcontroller类A:

- (void)displayAlertViewString:(NSString *)string
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login Failured!"
                                                    message:string
                                                   delegate:self
                                          cancelButtonTitle:nil
                                          otherButtonTitles:@"Ok", nil];
    [alert show];

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];

    if ([title isEqualToString:@"Ok"])
    {
        //reopen the keyboard let user continue login.
        [self.passwordField becomeFirstResponder[;
    }

在模型类B中,我在failure block的{​​{1}}中调用了显示警报视图方法。

AFNetworking

调试器中没有任何信息,Xcode只是停留在线程视图上。任何人都可以帮我搞清楚吗?感谢。

1 个答案:

答案 0 :(得分:0)

执行失败块后,您的loginViewController将从内存中释放,因为没有人强烈引用它。

当alertView尝试访问它的委托时,它会崩溃,因为它的委托不再存在于内存中。

我建议你看一下Advanced Memory Management Programming Guide