0

我有一个 NSCollectionView,其内容绑定到 NSArrayController 的排列对象。当我调用addObject:数组控制器时,它似乎重新分配了底层数组——我可以观察到指针改变地址。对于我的特定情况,这不是可接受的行为,因为其他对象也依赖于数组。

这是正常行为还是我做错了什么?我见过一些替代解决方案,例如直接修改数组并在控制器上调用willChangeValueforKey:and 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 回答