Что точно супер в Objective C?

Насколько я знаю, это - указатель на суперкласс. Это соединено проводами с суперклассом и не динамично вычислено во времени выполнения. Хотел бы знать это больше подробно...

Кто-либо?

48
задан Ben S 22 June 2010 в 17:11
поделиться

4 ответа

super

По сути, он позволяет вам использовать реализации суперкласса текущего класса.

Для получения грубых подробностей о среде выполнения Objective-C:

[суперсообщение] имеет следующее значение:

Когда он встречает вызов метода, компилятор генерирует вызов одного из функции objc_msgSend, objc_msgSend_stret, objc_msgSendSuper, или objc_msgSendSuper_stret. Сообщения отправляется в суперкласс объекта (используя ключевое слово super) отправляются с использованием objc_msgSendSuper; другие сообщения отправлено с использованием objc_msgSend. Методы, которые иметь структуры данных как возвращаемые значения отправляются с использованием objc_msgSendSuper_stret и objc_msgSend_stret.

Так что да, он статический, а не определяется во время выполнения.

46
ответ дан 26 November 2019 в 18:43
поделиться

Это ключевое слово, которое эквивалентно self, но начинает поиск диспетчера сообщений с таблицы методов суперкласса.

29
ответ дан 26 November 2019 в 18:43
поделиться

super - это не указатель на класс. Super - это self , но при использовании в выражении сообщения это означает «искать реализацию, начиная с таблицы методов суперкласса».

19
ответ дан 26 November 2019 в 18:43
поделиться

Эти записи в блоге о что такое метакласс?, получение подклассов и классы и метаклассы могут дать вам некоторое представление о внутреннем устройстве этого.

5
ответ дан 26 November 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: