2013-03-21 33 views
2

我在我的课上有一个名为“歌曲”的NSArray类型的属性。我创建了一个自定义的getter和XCode中给了我创造的方法的选择:Xcode自动完成建议NSArray getter的神秘“songsAtIndexes”

songsAtIndexes:(NSIndexSet *)indexes 

这是什么和为什么的XCode产品呢?这是特定于NSArray属性吗?为此方法创建一个方法/ getter的目的是什么?如果我没有手动定义它,它会自动创建/合成吗?

+2

Xcode可能只是在组合变量名称并试图弄清楚你想要做什么时很聪明。 – Linuxios 2013-03-21 21:57:16

+1

它实际上是KVC的结果:http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/Compliant.html,或者实施方法-countOf ,以及一个或两个-objectIn AtIndex:或 - AtIndexes:.' – 2013-03-21 22:00:31

+0

我认为这是针对KVO/KVC – 2013-03-21 22:00:49

回答

5

这是针对您的课程可以使用的索引集合的少量使用KVC优化的结果。你可以阅读关于这个here,而是摘录:

索引一对多的关系符合

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

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

它才真正使用核心数据与KVC(偶尔NSPredicate S),但是你可以利用这些方法,如果你想。

在99%的案例中,实现这一点确实没有必要,但如果您愿意,您可以。