我的班级有一个 NSArray 类型的属性,称为“歌曲”。我正在为它创建一个自定义 getter,XCode 为我提供了一个创建方法的选项:
songsAtIndexes:(NSIndexSet *)indexes
这是什么,为什么 XCode 提供这个?这是特定于 NSArray 属性的吗?为该方法创建方法/getter 的目的是什么?如果我不手动定义它,它会自动创建/合成吗?
我的班级有一个 NSArray 类型的属性,称为“歌曲”。我正在为它创建一个自定义 getter,XCode 为我提供了一个创建方法的选项:
songsAtIndexes:(NSIndexSet *)indexes
这是什么,为什么 XCode 提供这个?这是特定于 NSArray 属性的吗?为该方法创建方法/getter 的目的是什么?如果我不手动定义它,它会自动创建/合成吗?
这是对可用于您的类的索引集合进行少量使用的 KVC 优化的结果。您可以在此处阅读有关此内容的信息,但要摘录:
索引对多关系合规性
对于索引到多的关系,KVC 合规性要求您的类:
- 实现一个名为
-<key>
返回数组的方法。<key>
或者有一个名为or的数组实例变量_<key>
。- 或者实现该方法
-countOf<Key>
和 -objectInAtIndex: 或 中的一个或两个-<key>AtIndexes:
。- 或者,您还可以实施
-get<Key>:range:
以提高性能。
它只真正与带有 KVC(有时NSPredicate
是 s)的 Core Data 一起使用,但如果您愿意,可以利用这些方法。
在 99% 的情况下确实没有必要实现这一点,但如果你愿意,你可以这样做。