Класс id в target-c, почему он подходит для любых классов? - PullRequest
0 голосов
/ 25 мая 2019

У меня вопрос о классе id в Objective-C. Я не знаю, почему это подходит для любых классов, таких как:

id objc = [[UIButton alloc] init]; 

Я знаю, что класс id является указателем на структуру с именем objc_object, но справа от кода возвращается адрес памяти экземпляра, размер которого отличается от структуры objc_object. Так почему же это нормально?

typedef struct objc_object *id;

1 Ответ

1 голос
/ 25 мая 2019

Адреса памяти имеют одинаковый размер.Даже если вы используете UILabel * objc = [[UIButton alloc] init]; Это работает!Преимущество использования KnownClassType заключается в том, что компилятор (и IDE) его преобразует и показывает свой интерфейс даже до запуска приложения.Но нет гарантии для типа во время выполнения.id - это просто AnyObject тип, который вы должны сами позаботиться о приведении типа.

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