UIAlertView导致iOS SDK 6.0崩溃

kub*_*lay 18 iphone objective-c uialertview ios6

我最近向App Store提交了一个尚未被接受的应用程序.同时,我下载了Xcode 4.5并在iPhone 6.0模拟器中测试了我的应用程序.

然而,当我打算显示的UIAlertView,该应用程序崩溃,在[myAlertView show]与线EXC_BAD_ACCESS错误.它适用于iPhone 5.1模拟器.

这是我的代码:

UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Are you sure?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[myAlertView show];  
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?我的代码怎么办?

另外,您认为我应该将我的应用程序重新发送给Apple吗?(只是询问您的建议)

提前致谢.

编辑:由于iOS 6崩溃,Apple拒绝了该应用.

小智 27

删除此方法并使用其他方法:

 [myAlertView show];  
Run Code Online (Sandbox Code Playgroud)

试试这个方法:

 [myAlertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)


Lev*_*evi 20

请参阅此相关问题: 从后台线程显示的UIAlertView并且没有委托创建EXC_BAD_ACCESS

用户输入和UI调用必须来自主线程.他们中的许多人将在其他线程上"大部分"工作,但有时会崩溃.与模拟器相比,它们更容易在设备上发生不同的(或多或少)崩溃,但Apple可能会做出改变,从而影响iOS6中的这种差异.

对于你的第二个问题,我会回答是的,我会在你修复问题后立即上传更新的二进制文件,特别是如果你可以在设备上重现这一点(我强烈建议你尝试在设备上重现它) .否则,你可以A)接受用户讨厌的错误,或者B)被拒绝并且有更长的延迟和可能更严格的审查.如果您在审核完成之前发送更新的二进制文件,它确实会让您处于AFAIK的"后方",但优于备选方案.