Сбой инициализатора Game Center GKLeaderboard?

Сейчас я работаю над Game Center. В Руководстве по программированию Apple Game Center (Листинг 4-11), приведен пример кода для получения лучших результатов в таблице лидеров:

GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil)
{
    ...
    [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
    ...
}

Нужно ли вообще проверять, является ли возвращаемый объект нулевым? Будет ли когда-нибудь init терпеть неудачу и возвращать ноль?


person zavié    schedule 19.01.2015    source источник


Ответы (1)


В документации об этом ничего не сказано, и если мы посмотрим в заголовочный файл для GKLeaderboard (GKLeaderboard.h), то там тоже ничего об этом не сказано. Объявление функций инициализации выглядит так:

- (instancetype)init;

Это означает, что функция инициализации вернет либо экземпляр GKLeaderboard, либо nil (или любой подкласс GKLeaderboard).

Таким образом, ответ будет положительным, вам всегда нужно проверять, равно ли возвращаемое значение нулю.

person JagCesar    schedule 19.01.2015