Что я должен передать в качестве параметра методу, ожидающему NSError**?

Я создавал одноранговое соединение для новой игры, в которой не используется средство выбора одноранговых узлов. Я, однако, ошарашен тем, что сюда вставить:

- (void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID {
    NSLog(@"I GOTS A CONNECTION REQUEST");
    if(connected == YES) {
        //deny all requests
    }
    else if(connected == NO) {
        [session acceptConnectionFromPeer:peerID error:???];
    }
}

Что поставить вместо вопросительных знаков? В документации написано NSError **.


person Adam Libonatti-Roche    schedule 26.10.2009    source источник


Ответы (2)


Это указатель на NSError*, поэтому:

NSError* error=nil;
[session acceptConnectionFromPeer:peerID error:&error];
person Jonathan del Strother    schedule 26.10.2009
comment
Вот и избавился от ошибки. Что я должен туда добавить, если я хочу создать ошибку, которая появится. - person Adam Libonatti-Roche; 26.10.2009
comment
К сожалению, в UIKit отсутствуют методы PresentError: из AppKit, так что вы застряли с представлением ошибки самостоятельно. Быстрый и простой способ сделать это — использовать UIAlertView. Вы можете придумать заголовок и сообщение, хотя вы можете использовать -[NSError localizedDescription] - person Jonathan del Strother; 26.10.2009
comment
-acceptConnectionFromPeer: error: присваивает автоматически освобождаемый NSError указателю. Вы можете проверить, была ли ошибка с if (error) { printf("ERROR"); } - person Georg Schölly; 26.10.2009

Если ошибки нет, установите error на ноль.

error — это средство передачи остальной части вашего приложения, почему соединение не устанавливается.

В вашем примере сверните свой собственный NSError, заявив, что ваше приложение не принимает соединения, поскольку оно уже подключено к клиенту.

См. документацию Центра разработки iPhone для NSError, чтобы узнать, как его заполнить.

person Niels Castle    schedule 26.10.2009
comment
Вы не можете вернуть nil (или вообще что-нибудь) из метода возвращаемого типа void. - person Quinn Taylor; 26.10.2009