テキスト、特にデリゲートに関する iOS ドキュメントを読むと、カスタム デリゲート オブジェクトが実装する必要があるすべてのプロトコル メソッドがフックと呼ばれます。しかし、他のいくつかの本では、これらのフックをcallbackと呼んでいますが、それらの違いは何ですか? 名前が違うだけで仕組みは同じ?Obj-C に加えて、C などの他のプログラミング言語にもフックがありました。Obj-C と同じ状況ですか?
4 に答える
ここでの用語は少しあいまいです。一般に、2つは同様の結果を達成しようとします。
一般に、コールバックは、処理フローの適切なタイミングで呼び出されるようにAPIに登録する関数(またはデリゲート)です(たとえば、処理が特定の段階にあることを通知するため)。
フックは伝統的に、APIへの呼び出しを変更する目的を果たすもう少し一般的なものを意味します(たとえば、渡されたパラメーターの変更、呼び出された関数の監視)。この意味では、通常、Javaなどの高級言語で達成できるレベルよりもはるかに低いレベルです。
iOSのコンテキストでは、フックという言葉は上記のコールバックとまったく同じことを意味します
この 2 つの用語は非常に似ており、同じ意味で使用されることもあります。フックは、ユーザー コードが関数をリンクしてライブラリの動作を変更できるライブラリのオプションです。ライブラリ関数は、ユーザー コードと同時に実行する必要はありません。デストラクタのように。
コールバックは、ユーザー コードがライブラリ呼び出し (通常は I/O 呼び出しまたは GUI 呼び出し) を開始する特定のタイプのフックであり、カーネルまたは GUI サブシステムに制御を渡します。制御プロセスは、ユーザー コードがハンドラーを提供できるように、割り込みまたはシグナルでユーザー コードを「コールバック」します。
歴史的に、割り込みハンドラーに使用されるフックと、GUI イベント ハンドラーに使用されるコールバックを見てきました。また、ルーチンを静的にリンクするときにフックが使用され、動的コードでコールバックが使用されることもわかります。