Xcode自动完成为NSArray getter提供了神秘的"songsAtIndexes"

zak*_*ces 2 xcode autocomplete objective-c nsarray ios

我的课堂上有一个名为"歌曲"的NSArray类型的属性.我正在为它创建一个自定义getter,XCode为我提供了创建方法的选项:

songsAtIndexes:(NSIndexSet *)indexes
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*III 5

这是对索引集合进行少量使用的KVC优化的结果,可以在您的类上使用.你可以在这里阅读,但要摘录:

索引到多个关系合规性

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

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

它只与Core Data和KVC(偶尔使用NSPredicates)一起使用,但如果您愿意,可以使用这些方法.

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