1

我刚刚意识到有两种方法可以使用 NSArrayController。

将 Controller 绑定到 Array 并将对象添加到 Array。或者根本不使用任何数组,直接将对象添加到控制器。

[racesArray addObject: [[Race alloc] initWithName:@"Human"] ];

或者

[myRacesController addObject: [[Race alloc] initWithName:@"Human"] ];

由于这两个版本都可以很好地满足我的需求,我想知道哪种方法是正确的使用方法。我想使用 Array 可能会更好,但既然 NSArrayController 也能够存储数据,为什么我不应该使用这个功能呢?

4

3 回答 3

3

不要像在第一个示例中那样直接与数组对话。除非您明确发布有关更改的 KVO 通知,否则阵列控制器不会发现您的更改,这很麻烦并且很容易忘记这样做。

我推荐的方法是绑定数组控制器,然后为您的属性实现符合 KVC 的数组访问器方法init,并在您的应用程序中的任何地方使用这些方法(类和dealloc方法除外)。

这样,您的对象可以改变自己的数组,而无需显式发布 KVO 通知或了解数组控制器。

于 2009-10-29T08:04:41.390 回答
2

两种方式都很好。如果你不给它一个数组,就NSArrayController维护它自己的。

于 2009-10-27T19:56:02.760 回答
0

NSArrayController 与 KVO 兼容,可与 UI 元素绑定。它还具有对象数组的附加元数据,例如 selectedObject。这些便利对象不适用于 NSArray。NSArray 只是一个数组,上面定义了常规的数组运算符和方法。如果您不需要绑定 UI 元素,请使用它。

于 2009-10-28T02:32:26.257 回答