019913 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

てくてくのiphoneアプリ開発あれやこれや

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Profile

ニョホホホhoooo!

ニョホホホhoooo!

Keyword Search

▼キーワード検索

Freepage List

Rakuten Card

Calendar

Favorite Blog

まだ登録されていません

Comments

コメントに書き込みはありません。

Headline News

2011年08月27日
XML
カテゴリ:カテゴリ未分類
オブジェクトの連携には3つの方法がある。
delegateとnotificationとKVO(Key-Value Observing)だ。

どれも同じようなことができるのだが、
何が違うのか、どう使い分けるべきかを考えてみることにする。

この三つを訳すと
順に委譲、通知、監視という意味になる。

この言葉の意味の違いがすなわち、使われ方の違いだ。
「ビール買ってきましたがどうしましょう?」
「ビール買ってきましたよ」
「冷蔵この中のビールが増えたことに俺は気がついたぜ」

まずdelegateについて。
一番良く見かけるのはUIViewとUIViewControllerの連携だ。
「画面をタップされましたけどどうしましょう?」とviewがcontrollerにお伺いを立てる。
controllerはdelegateメソッドの戻り値という形でお伺いに対する指示を出すこともあるし、
何も言わずに一人で続きの処理を行なうこともある。

さて、この委譲という行為の特徴は、お伺いを立てる側と指示する側に関係が1対多だということだ。
一人が複数人に指示を仰ぐことはできないが、一人で複数に指示するのは可能だ。

次にnotificationについて。
よくあるのはmodelとcontrollerへの連携だ。
「データが消えてしまいました」とmodelがcontrollerへ通知する。
実はデータを消したのは他のcontrollerだったりするが、そんなことは関係ない。
通知を受けたcontrollerがどうするかもmodelは知ったこっちゃない。ただ教えとくだけだ。

この通知という行為は、文字通り教えるだけで、それ以上は何もしない。
委譲と違って教える相手が複数だろうと構わない。

最後にKOVについて。
これを見るのはマルチスレッドを使うときだ。
順序なんて関係なく好き勝手やっているスレッドたちが何やっているのかを監視する。
「こっちでちゃんと見ておくので、何か起きてもいちいち報告しなくていいぜ」

この監視という行為の特徴は、監視される側は何も意識しないでいいということだ。
通知の場合、何かが起きれば報告義務が生じる。
監視は監視者が勝手にやってくれるので気にしなくて良いのだ。



よって3つの使い分けとしては、
AがBに寄り添わないと生きていけない→AからBへの委譲
Aが何しているかを気にしているBやCがいる→AからBやCへの通知
Aを何をしているかをBやCが気にしているがAは二人に興味がない→Aに対するBとCの監視。




参考:http://www.mcubedsw.com/blog/index.php/site/comments/the_rules_of_communication/





お気に入りの記事を「いいね!」で応援しよう

Last updated  2011年08月27日 17時18分27秒
コメント(0) | コメントを書く



© Rakuten Group, Inc.