繁体   English   中英

调用UIAlertView委托方法崩溃

[英]Calling UIAlertView delegate method crashed

我有一个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中,我在AFNetworkingfailure block中调用了显示警报视图方法。

failure:^(AFHTTPRequestOperation *operation, NSError *error){
        NSLog(@"%@", error);

        RDLoginViewController *loginViewController = [[RDLoginViewController alloc] init];

        [loginViewController displayAlertViewString:@"The entered email or password was incorrectly!"];

调试器中没有任何信息,Xcode只是停留在线程视图上。 谁能帮我解决这个问题? 谢谢。

执行完故障块后,由于没有人对其强大的引用,您的loginViewController将从内存中释放。

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

建议您阅读《 高级内存管理编程指南》

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM