私の知る限り、これはスーパークラスへのポインタです。これはスーパークラスに固定されており、実行時に動的に把握されません。もっと詳しく知りたい...
誰でも?
基本的に、現在のクラスのスーパークラスの実装を使用できます。
Objective-Cランタイムの grittydetails の場合:
[super message]
の意味は次のとおりです。
メソッド呼び出しを検出すると、コンパイラーは、objc_msgSend、objc_msgSend_stret、objc_msgSendSuper、またはobjc_msgSendSuper_stretのいずれかの関数への呼び出しを生成します。オブジェクトのスーパークラスに送信されるメッセージ(superキーワードを使用)は、objc_msgSendSuperを使用して送信されます。その他のメッセージは、objc_msgSendを使用して送信されます。戻り値としてデータ構造を持つメソッドは、objc_msgSendSuper_stretおよびobjc_msgSend_stretを使用して送信されます。
つまり、それは静的であり、not実行時に決定されます。
これはself
と同等のキーワードですが、スーパークラスのメソッドテーブルを使用してメッセージディスパッチの検索を開始します。
super
is notクラスへのポインタ。スーパーはself
ですが、メッセージ式で使用される場合、「スーパークラスのメソッドテーブルから始まる実装を探す」ことを意味します。
メタクラスとは? 、 geting subclasses および classes and metaclasses に関するこれらのブログ投稿は、これの内部についていくらかの洞察を与えるかもしれません。