カテゴリー別アーカイブ: Objective-C

[iOS][Objective-C]プロトコルを用いたコールバック関数実装

非同期通信を行なう部分をライブラリ化したいと思ったら,
通信完了後に呼び出すコールバック関数を実装するのをどうやるんだろうと疑問に思った.

下記を参考にやり方を把握した.(他にも適切な方法があるかもしれない)
http://d.hatena.ne.jp/sugyan/20091213/1260708978

プロトコル(JavaのInterface)を利用して実装することができる.

キーになるのは下記だと思う.
(1)コールバック関数として,登録したい関数をプロトコルで宣言する.
(2)Delegateで呼び出し側のクラスのポインタ(self)をライブラリ側に渡す.
(3)ライブラリ側は(2)で得たDelegateのポインタを利用して(1)の関数を呼び出す

一般的なライブラリではdelegateを指定することが多いが,
その理由も上記内容を理解すれば納得できると思う.