Objective-C のメッセージング システムは動的です。すべてのオブジェクトにはstruct
、ランタイムがイントロスペクションに使用する情報が含まれています。ここでランタイムは、オブジェクトが応答できるメソッドのリストを見つけます。たとえば、次のようにインスタンスにメッセージを送信するとします。
[mynewview someMethod];
ランタイムは、最初にオブジェクト情報をチェックして、メッセージに応答できるメソッドを見つけようとします。何も見つからない場合は、スーパー クラスをクエリします。実際、ランタイムははるかに複雑で、オブジェクトに応答する機会を与えます (これが動的な部分です。たとえば、mynewview
メソッドが呼び出されていなくてもsomeMethod
、呼び出しを満たすことができるかもしれませんが、それはあなたができることです)今は心配したくない)。
子クラスから、指定されたメソッドのスーパークラスの実装をキーボードで呼び出すことができます。そのため、サブクラスであるsuper
場合は、次の方法で実装を呼び出すことができます。mynewview
myviewcontroller
myviewcontroller
mynewview
[super someMethod];
がとsomeMethod
の両方に存在する場合、ランタイムは自動的に子実装のみを呼び出します。(必要な場合) 子実装から親実装を呼び出す必要があります。myviewcontroller
mynewview