2

我的班级有一个 NSArray 类型的属性,称为“歌曲”。我正在为它创建一个自定义 getter,XCode 为我提供了一个创建方法的选项:

songsAtIndexes:(NSIndexSet *)indexes

这是什么,为什么 XCode 提供这个?这是特定于 NSArray 属性的吗?为该方法创建方法/getter 的目的是什么?如果我不手动定义它,它会自动创建/合成吗?

4

1 回答 1

5

这是对可用于您的类的索引集合进行少量使用的 KVC 优化的结果。您可以在此处阅读有关此内容的信息,但要摘录:

索引对多关系合规性

对于索引到多的关系,KVC 合规性要求您的类:

  • 实现一个名为-<key>返回数组的方法。
  • <key>或者有一个名为or的数组实例变量_<key>
  • 或者实现该方法-countOf<Key>和 -objectInAtIndex: 或 中的一个或两个-<key>AtIndexes:
  • 或者,您还可以实施-get<Key>:range:以提高性能。

它只真正与带有 KVC(有时NSPredicate是 s)的 Core Data 一起使用,但如果您愿意,可以利用这些方法。

在 99% 的情况下确实没有必要实现这一点,但如果你愿意,你可以这样做。

于 2013-03-21T22:04:40.610 回答