Как мое приложение Mac должно обрабатывать фатальную ошибку? - PullRequest
0 голосов
/ 02 февраля 2012

Я создаю игру Cocoa OpenGL в XCode, которую я хочу в какой-то момент распространить в магазине приложений Mac. Я не уверен, что делать, когда мое приложение сталкивается с фатальной ошибкой, а именно невозможностью создать формат пикселей или контекст 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 сделать это?

Обратите внимание, что это происходит только при запуске.

1 Ответ

1 голос
/ 02 февраля 2012

Не думаю, что вам следует спрашивать у пользователя информацию. Возможно, вам следует записать состояние на диск, а затем предложить отправить отчет о сбое при следующем запуске. Ваши данные должны записывать, какие были последние действия пользователя N и т. Д. Запрос информации о пользователе раздражает пользователя и, вероятно, не даст вам реальной информации, которая вам нужна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...