Tak i nie. Prawdą jest, że id x
wyznaczanie x jako wskaźnika, ale mówienie, że reguły konwersji typu wskaźnika mają zastosowanie, jest błędne, ponieważ „id” ma specjalne reguły konwersji typów. Na przykład za pomocą void *
wskaźnika nie możesz tego zrobić:
void *x;
char *y = x; // error, this needs an explicit cast
Wręcz przeciwnie, z id:
id x;
NSString *y = x;
Zobacz więcej zastosowań typu id w obiektywnych przykładach c .
Dodatkowo w "nowoczesnym" celu C preferowane jest używanie instancetype
zamiast "id" metod "init". W Xcode jest nawet narzędzie do automatycznej konwersji, które to zmienia. Przeczytaj o instancetype: czy warto byłoby zacząć używać instancetype zamiast id?
void*