Так і ні. Це правда, що id x
позначення x як покажчика, але твердження про те , що застосовуються правила перетворення типу покажчика, є неправильним, оскільки "id" має спеціальні правила перетворення типу. Наприклад, за допомогою void *
вказівника ви не можете цього зробити:
void *x;
char *y = x; // error, this needs an explicit cast
Навпаки, це можливо з id:
id x;
NSString *y = x;
Дивіться більше використання ідентифікатора типу в об'єктивних прикладах c .
Крім того, у "сучасній" Цілі C переважно використовувати instancetype
замість "id" у методах "init". У Xcode є навіть інструмент автоматичного перетворення для зміни цього. Прочитайте про instancetype: Чи було б вигідно почати використовувати instancetype замість id?
void*