Что я должен делать с методом init без аргументов, если нет значений по умолчанию? - PullRequest
0 голосов
/ 26 сентября 2010

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

Моя интуиция говорит, что должна освободить объект и вернуть nil:

- (id)init {
    [self release];
    return nil;
}

... но при чтении документов Apple для NSObject:

Каждый класс должен гарантировать, что метод init либо возвращает полностью функциональный экземпляр класса, либо вызывает исключение.

Это меня смущает: (

1 Ответ

3 голосов
/ 26 сентября 2010

Вызовите исключение.:) Как то так:

- (id)init
{
    [self release];
    //self = nil; not required when throwing an exception
    @throw [NSException
        exceptionWithName: NSGenericException
        reason:            @"-init not supported"
        userInfo:          nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...