我有一个NSCollectionView,其内容绑定到NSArrayController的arrangeObjects。当我在数组控制器上调用addObject:
时,它似乎重新分配了底层数组 - 我可以观察指针改变地址。对于我的特定情况,这是不可接受的行为,因为其他对象也依赖于数组。
这是正常行为还是我做错了什么?我已经看到了一些替代解决方案,例如直接修改数组并在控制器上调用willChangeValueforKey:
和didChangeValueForKey:
,但这似乎不是最优雅的解决方案。
我对Objective-C和Cocoa相当新,所以对我来说很容易。 :)
谢谢!
答案 0 :(得分:0)
@interface NSArrayController : NSObjectController {
@private
void *_reserved4;
id _rearrangementExtensions;
NSMutableArray *_temporaryWorkObjects;
NSUInteger _observedIndexHint;
NSMutableIndexSet *_selectionIndexes;
NSMutableArray *_objects;
NSIndexSet *_cachedSelectedIndexes;
NSArray *_cachedSelectedObjects;
NSArray *_arrangedObjects;
}
如果查看NSArrayController的头文件,arrangeObject的实例变量是NSArray,因此每当添加新对象时它都必须创建一个新数组并且是正常行为。