0
我有一个viewController类A有一个方法创建一个UIAlertView并实现UIAlertView委托方法,和NSObject模型类B处理日志记录和网络。在B类中,只分配一个A类实例,然后调用A的方法。警报视图显示正常,但是当我点击“确定”按钮时,它只是崩溃。我想单击“确定”按钮重新打开键盘,让用户在失败后继续登录。 (已有在头文件中声明UIAlertView中协议。)调用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,I称为在AFNetworking
的failure block
显示警报视图方法。
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"%@", error);
RDLoginViewController *loginViewController = [[RDLoginViewController alloc] init];
[loginViewController displayAlertViewString:@"The entered email or password was incorrectly!"];
调试器中没有任何信息,Xcode只是停留在线程视图中。任何人都可以帮我弄明白吗?谢谢。
谢谢。我怎么能阻止从内存释放?为什么在失败块执行后,对象应该被释放? –
它被释放,因为没有强引用它。这里的答案将取决于您的应用程序的体系结构。根据你已经显示的内容,在类中创建一个触发AFNetworking请求的强属性似乎是合理的,而不是在失败块上分配和启动它。 –
我在头文件中添加一个类属性,而不是在'success block'中初始化类,但仍然崩溃,这有什么问题? –