Разница (Object *) и (id) в Objective-C - PullRequest
       3

Разница (Object *) и (id) в Objective-C

1 голос
/ 25 декабря 2010

Помогите, пожалуйста, выяснить, в чем разница между этими двумя фрагментами кода: (В фрагментах Foo - это класс, производный от Object, объявленного в objc / Object.h)

// Snippet 1
Object* o = [Foo new];
[o free];

// Snippet 2
id o = [Foo new];
[o free];

Спасибо!

РЕДАКТИРОВАТЬ
Спасибо за полезные ответы!Позвольте мне поделиться ссылкой, которую я нашел, возможно, она поможет тем, кто отвечает на тот же вопрос, что и я, и хочет лучше понять его: id_vs_NSObject .

1 Ответ

6 голосов
/ 25 декабря 2010

id может быть любым и может отвечать на любое сообщение в системе без предупреждения, как и любое другое. Object * (имеется в виду NSObject *?) Строго типизирован - компилятор предполагает, что он отвечает только на методы, на которые, как известно, Object отвечает.

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