假设我的应用程序做了一些无法恢复的事情(这种情况从未发生过,对吧?:P)。我应该使用exit()吗?我应该使用NSAssert(false,@“Foo”)吗?我应该以某种方式扔东西吗?谷歌的答案很难。
答案 0 :(得分:0)
我不认为你应该强行退出你的应用程序,如果发生了不好的事情,因为这对用户来说很烦人 - 他们不会知道出了什么问题。此外,如果这种情况经常发生,Apple可能会拒绝您的应用。
相反,您应该弹出一个对话框来说明出错的地方(例如写入数据库的错误,请再试一次)。
如果您的应用最终处于完全崩溃的状态,则应重新设计应用。你能举一个“不可恢复”的例子吗?
答案 1 :(得分:0)
如果您的应用确实无法恢复某些内容,则可能会被O.S.终止。没有你有可能知道它。考虑访问一个解除分配的对象。
如果您正在考虑您的程序可能检测到的错误或不可预见的情况,那么它在很大程度上取决于它的含义。但一般政策是:
告知用户发生错误的事实;
尝试尽可能多地恢复;
正常退出应用程序。
1和3明确排除了您提及的NSAssert
和exit()
选项。投掷也没有帮助,因为如果你抛出异常并且不处理它,你的程序将被突然终止。
正常退出意味着像正常情况一样退出,当调用所有dealloc方法时,所有文件都关闭,所有资源都被释放。并且可能存储有关程序运行状态的足够信息,以便在下次启动时恢复。