31
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KVOのメソッドの憶え方

Last updated at Posted at 2013-11-22

KVOはたまに使うのでいつもメソッドを忘れてしまう。リファレンスや技術サイトを検索してもKVOについての技術側面の説明が多くメソッドを素早く思い出したいときのサイトがないので、そのメモ。

念のため、Xcodeのスニペットに登録できるように変数部分をテンプレート化している。

監視の登録と解除

登録

//KVOの登録
[<#監視対象#> addObserver:<#監視するオブザーバ#>
              forKeyPath:<#監視対象のプロパティ名#>
                 options:<#監視するデータにどのような物を含めるか#>
                 context:<#任意のインスタンス#>];

解除

//KVOの解除
[<#監視対象#> removeObserver:<#監視するオブザーバ#>
                 orKeyPath:<#監視対象のプロパティ名#>];

登録、解除もまず監視対象有りきなので、メッセージは監視対象へと送るようにadd/removeすると憶えてコーディングを進めるとメッセージ呼び出しが自動補完される。

オブザーバのメソッド

監視するオブザーバには次のようなメソッドを実装する。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    //MEMO:場合によっては任意のcontextで先に条件を分ける

    if( [keyPath isEqualToString:<#監視対象のプロパティ名#>] ){
         //MEMO:changeのキーと値により判断。
    }
}

監視した結果実行されるだけなのでメソッドに戻り値はなく、監視なのでobserveから始めると憶えとくとあとは楽。

31
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?