我最近向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];
这是正常的吗?我的代码怎么办?
另外,您认为我应该将我的应用程序重新发送给Apple吗?(只是询问您的建议)
提前致谢。
编辑:由于iOS 6崩溃,Apple拒绝了该应用。
答案 0 :(得分:27)
删除此方法并使用其他方法:
[myAlertView show];
尝试此方法:
[myAlertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
答案 1 :(得分:20)
见相关问题: UIAlertView shown from background thread and with no delegate creates EXC_BAD_ACCESS
用户输入和UI调用必须来自主线程。他们中的许多人将在其他线程上“大部分”工作,但有时会崩溃。与模拟器相比,它们更容易在设备上发生不同的(或多或少)崩溃,但Apple可能会做出改变,从而影响iOS6中的差异。
对于你的第二个问题,我会回答是的,我会在你解决问题后立即上传更新的二进制文件,特别是如果你可以在设备上重现它(我强烈建议你尝试在设备上重现它)一个装置)。否则,你可以A)接受用户讨厌的错误,或者B)被拒绝并且有更长的延迟和可能更严格的审查。如果您在审核完成之前发送更新的二进制文件,它确实会让您处于AFAIK的“后方”,但比替代方案更好。