Да и нет. Верно, что наличие id x
обозначает x как указатель, но утверждение, что применяются правила преобразования типа указателя, неверно, потому что «id» имеет специальные правила преобразования типа. Например, с void *
указателем этого сделать нельзя:
void *x;
char *y = x; // error, this needs an explicit cast
Напротив, это возможно с id:
id x;
NSString *y = x;
См. Больше примеров использования идентификатора типа в примерах с .
Кроме того, в «современной» Objective C предпочтительнее использовать instancetype
вместо id в методах «init». В Xcode есть даже инструмент автоматического преобразования для изменения этого. Прочтите об instancetype: было бы полезно начать использовать instancetype вместо id?
void*