2013-11-20 8 views
4

If a return or argument type isn't explicitly declared, it’s assumed to be the default type for methods and messages — an id .Опускание типа возвращаемого типа и типа аргумента в Objective-C

Таким образом, нет никаких вопросов о том, как это работает технически, но целесообразно ли вообще опустить этот тип или это просто плохая практика? Имеет ли Apple какие-либо официальные рекомендации относительно этого?

ответ

1

Это очень редко и поэтому не рекомендуется. Я еще не встречал ни одного случая в одном из заголовков Apple.

Это немного похоже на стандарт C, позволяющий вызывать неизвестную функцию (без прототипа): возможно, но не рекомендуется.

Кроме того, все меньше и меньше случаев, когда возвращение идентификатора является хорошей идеей.

+0

Вы когда-нибудь смотрели заголовок NSArray? – peko

+0

более или менее недавно добавлено: '+ (id) JSONObjectWithData: options: error:' – vikingosegundo

+0

@peko По крайней мере, текущие SDK не содержат заголовка NSArray, который опускает тип возврата. –

3

Это плохая практика. Это похмелье с первых дней C. Не делайте этого, ноль вверх.

+0

@NikolaiRuhe - Он действительно вернулся к C не Objective-C, он был просто изменен для последнего. – CRD

+0

Извините, что я слишком быстро с этой коррекцией. Я думал, что вам нужно будет обозначить Objective-C, поскольку в C. нет типа 'id'. –

0

Задание типов помогает компилятору следить за тем, что вы делаете, это не имеет никакого значения во время выполнения (но ваше приложение будет разбиваться, если вы отправляете объекты на объекты, которые не могут их получить).

идентификатора просто означает любого объекта

Вы можете использовать идентификатор, если вам нужно обработать несколько типов объектов, где-то, но вы лучше знаете, что вы делаете здесь, и, вероятно, хотите использовать introspection, чтобы предотвратить крах приложения из-за сообщения, отправленного на несовместимый объект.

Смежные вопросы