Тип возврата метода инициализации iPhone - PullRequest
2 голосов
/ 20 марта 2010

Предположим, мы пишем класс (назовем его Class) в программе для iPhone. Во всех примерах методы init обычно объявляются так:

-(id) initWithFoo: (Foo *) foo

Мой вопрос: было бы логичнее сделать следующее? Почему или почему нет?

-(Class *) initWithFoo: (Foo *) foo

1 Ответ

3 голосов
/ 20 марта 2010

С Реализация инициализатора в Mac Dev Center

Причина этого заключается в том, что id указывает на то, что класс целенаправленно не рассматривается - что класс не указан иможет быть изменено в зависимости от контекста вызова.Например, NSString предоставляет метод initWithFormat :.Однако при отправке экземпляру NSMutableString (подкласс NSString) сообщение возвращает экземпляр NSMutableString, а не NSString.(См. Также пример синглтона, приведенный в «Объединении распределения и инициализации».)

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