objective-c - 我的 Mac 应用程序应如何处理 fatal error ?

标签 objective-c macos cocoa opengl fatal-error

我正在 Xcode 中创建一个 Cocoa OpenGL 游戏,我希望在某个时候在 Mac 应用商店上分发它。当我的应用程序遇到 fatal error (即无法创建像素格式或 OpenGL 上下文)时,我不确定该怎么办。我想我应该显示一些消息来说明发生了什么,也许给用户一个表单来输入快速评论并将其发送给我(我将如何执行此操作?),然后终止。但最好的方法是什么?

…

NSOpenGLPixelFormatAttribute attribs[] = {
    …
    NSOpenGLPFAAccelerated,           // Hardware acceleration
    NSOpenGLPFADoubleBuffer,          // Double buffering
    NSOpenGLPFAColorSize, 320,        // *** THIS IS FOR TESTING FAILURE ***
    0
};

// Create pixel format
pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attribs];
if (!pixelFormat) {
    //////////////////////////////FATAL ERROR//////////////////////////////
}

// Create OpenGL context
openGLContext = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
if (!openGLContext) {
    //////////////////////////////FATAL ERROR//////////////////////////////
}

…

请注意,我请求颜色大小为 320 只是为了测试在这种不太可能的情况下会发生什么。

我研究过 NSAlert 但它似乎更适合警告消息,即使样式设置为 NSCriticalAlertStyle 也是如此。我想之后我应该使用 [NSApp Terminate:nil] 退出,但我不确定。在这些情况下我应该怎么做,才能与其他应用程序保持一致并符合 Apple 的做法?

请注意,这仅在启动时发生。

最佳答案

我认为您不应该向用户询问信息。您可能应该将状态写入磁盘,然后在下次启动时发送崩溃报告。您的数据应该记录用户最近的 N 个操作等。向用户询问信息会让用户感到恼火,并且可能不会为您提供所需的真实信息。

关于objective-c - 我的 Mac 应用程序应如何处理 fatal error ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103374/

相关文章:

ios - 在请求之间清除 WkWebview

xcode - 4.5 安装后启动板中的两个 Xcode 应用程序图标

cocoa - 带 admod 的 Xcode 4.4

objective-c - 将沙盒应用程序添加到登录项

objective-c - 直到 Break 才结束的循环

objective-c - 在所有符合协议(protocol)的类上实现一个类别

c++ - 通过Xcode使用GCC编译基本程序

macos - 使用 NKE 嗅探 HTTP 数据包

macos - 整个 Mac 应用程序的默认字体

objective-c - 如何正确处理 NSTextField 中的 <Return> + 修饰键?