彼ら。C プログラミングでは、メソッドが定義されていないとエラーになります。Objective-C プログラミングでは、警告のみになります。なぜ?たとえば、「[オブジェクトメソッド]」、どのようにコンパイルされますか?
ありがとう。
彼ら。C プログラミングでは、メソッドが定義されていないとエラーになります。Objective-C プログラミングでは、警告のみになります。なぜ?たとえば、「[オブジェクトメソッド]」、どのようにコンパイルされますか?
ありがとう。
[object method]
「メッセージ「メソッド」を「オブジェクト」に渡す」ようにコンパイルします。
実行時object
に、最初にメッセージの名前を持つメソッドがあるかどうかを確認します。もしそうなら、それはそれを実行します。それ以外の場合は、メッセージを他の人に転送したり、名前に基づいて応答を作成したりするためのさまざまなバックアップ メカニズムがあります。
[object method]
明示的にコンパイルされないのは、C++ スタイルの名前マングリングなどです__objectClass_Method@4(object)
。objc_msgSend
C の用語では、ランタイムによって定義されているため、確実に存在する呼び出しにコンパイルされます。
Objective-C 以外にも、動的ディスパッチは JavaScript、Python、Ruby などの言語でも使用されています。
トミーの答えは絶対に正しいです。ただし、プロジェクト設定で警告をエラーとして扱うことができます