Насколько я знаю, это - указатель на суперкласс. Это соединено проводами с суперклассом и не динамично вычислено во времени выполнения. Хотел бы знать это больше подробно...
Кто-либо?
По сути, он позволяет вам использовать реализации суперкласса текущего класса.
Для получения грубых подробностей о среде выполнения Objective-C:
[суперсообщение]
имеет следующее значение:
Когда он встречает вызов метода, компилятор генерирует вызов одного из функции objc_msgSend, objc_msgSend_stret, objc_msgSendSuper, или objc_msgSendSuper_stret. Сообщения отправляется в суперкласс объекта (используя ключевое слово super) отправляются с использованием objc_msgSendSuper; другие сообщения отправлено с использованием objc_msgSend. Методы, которые иметь структуры данных как возвращаемые значения отправляются с использованием objc_msgSendSuper_stret и objc_msgSend_stret.
Так что да, он статический, а не определяется во время выполнения.
Это ключевое слово, которое эквивалентно self
, но начинает поиск диспетчера сообщений с таблицы методов суперкласса.
super
- это не указатель на класс. Super - это self
, но при использовании в выражении сообщения это означает «искать реализацию, начиная с таблицы методов суперкласса».
Эти записи в блоге о что такое метакласс?, получение подклассов и классы и метаклассы могут дать вам некоторое представление о внутреннем устройстве этого.