ページ

2010年5月2日日曜日

今週のCocoa情報(5/2) - 今週気になった Cocoaプログラミング情報の紹介

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

NSArrayController 関連で少し。

How to get notified of changes to models via an NSArrayController? - Stack Overflow

NSArrayController 経由でモデルの変更を知るには? KVO と 自前で NSNotificationCenter にポストする方法,
bind:toObject:withKeyPath:options: をオーバーライドする方法が紹介されていた。先日の SimpleCap改修では一番簡単な KVO を使った。こんな感じ。

[arrayController addObserver:self
  forKeyPath:@"arrangedObjects"
 options:NSKeyValueObservingOptionNew
 context:nil];


Chris Hanson - NSArrayController design patterns

NSArrayController を使う場合で、それがバインドしている NSMutableArray を操作しても KVO通知がブロードキャストされない件について。
[[self mutableArrayValueForKey:@"buddies"] addObject:buddy]
or you can do
[self insertObject:buddy inBuddiesAtIndex:[self countOfBuddies]]
という方法が紹介されていた。

先日の SimpleCap 改修でもこの現象は把握していたので、この時には NSMutableArray操作後に -[NSArrayController rearrangeObjects] を呼び出して NSArrayController を強制的に更新していた。NSArrayController だけでモデルの操作が完結できればいいのだが、NSMutableArrayの方が操作メソッドは充実しているので、こちらを直接触った方が効率がいい。


Cocoa Bindings Examples and Hints
x
Cocoa Bindings のサンプルが10以上提供されている。今度眺めてみよう。