KVOでNSMutableArrayを監視する

まずは、NSMutableArrayに対してKVOで監視するようにセットしてやります。
ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
 
   //FeedItemManagerクラスn items プロパティに変更があったらKVO発火
 [[FeedItemManager sharedManager] addObserver:self forKeyPath:@"items" options:NSKeyValueObservingOptionNew context:nil];
}

//これが発火するメソッド
- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context{
    
    if (object == [FeedItemManager sharedManager] && [keyPath isEqualToString:@"items"]) {

     //色々処理
  }
}

ところが、下のように値をかえても発火しません。

self.items = deedItems;

調べた結果、以下のように mutableArrayValueForKey でラップしてやると発火するようになりました。

 [[self mutableArrayValueForKey:@"items"] insertObjects:items
                                                     atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, items.count)]];

まわりくどいやり方ですね。。。