1

彼ら。C プログラミングでは、メソッドが定義されていないとエラーになります。Objective-C プログラミングでは、警告のみになります。なぜ?たとえば、「[オブジェクトメソッド]」、どのようにコンパイルされますか?

ありがとう。

4

2 に答える 2

4

[object method]「メッセージ「メソッド」を「オブジェクト」に渡す」ようにコンパイルします。

実行時objectに、最初にメッセージの名前を持つメソッドがあるかどうかを確認します。もしそうなら、それはそれを実行します。それ以外の場合は、メッセージを他の人に転送したり、名前に基づいて応答を作成したりするためのさまざまなバックアップ メカニズムがあります。

[object method]明示的にコンパイルされないのは、C++ スタイルの名前マングリングなどです__objectClass_Method@4(object)objc_msgSendC の用語では、ランタイムによって定義されているため、確実に存在する呼び出しにコンパイルされます。

Objective-C 以外にも、動的ディスパッチは JavaScript、Python、Ruby などの言語でも使用されています。

于 2013-01-15T02:16:25.297 に答える
2

トミーの答えは絶対に正しいです。ただし、プロジェクト設定で警告をエラーとして扱うことができます

ここに画像の説明を入力

于 2013-01-15T03:22:48.247 に答える