0

コンテンツが NSArrayController の ArrangeObjects にバインドされている NSCollectionView があります。配列コントローラーを呼び出すとaddObject:、基になる配列が再割り当てされているように見えます-ポインターがアドレスを変更するのを観察できます。他のオブジェクトも配列に依存しているため、これは私の特定のケースでは受け入れられない動作です。

これは正常な動作ですか、それとも何か間違ったことをしていますか? 配列を直接変更してコントローラーで and を呼び出すなど、いくつかの代替ソリューションを見てきましwillChangeValueforKey:didChangeValueForKey:が、それは最もエレガントなソリューションとは思えません。

私は Objective-C と Cocoa にかなり慣れていないので、気楽にやってください。:)

ありがとう!

4

1 に答える 1

0
@interface NSArrayController : NSObjectController {
@private
    void *_reserved4;
    id _rearrangementExtensions;
    NSMutableArray *_temporaryWorkObjects;
    NSUInteger _observedIndexHint;
    NSMutableIndexSet *_selectionIndexes;
    NSMutableArray *_objects;
    NSIndexSet *_cachedSelectedIndexes;
    NSArray *_cachedSelectedObjects;
    NSArray *_arrangedObjects;
}

NSArrayController のヘッダーを見ると、arrangedObject のインスタンス変数は NSArray であるため、新しいオブジェクトを追加するたびに新しい配列を作成する必要があり、これは通常の動作です。

于 2013-01-26T00:53:21.733 に答える