我一直在阅读一些不同的程序,这些程序使用 sortUsingSelector 方法对带有字符串对象的数组进行排序,但我不知道它们是如何做到的。
每个程序都从定义排序方法开始,如下所示:
[myBook sort]; /**myBook is the name of the array in the addressBook class**/
-(void) sort
{
[book sortUsingSelector: @selector (compareNames:)];
}
/**compareNames is defined in the addressCard class**/
sort 方法使用了一个似乎可以完成所有工作的选择器方法:
-(NSComparisonResult) compareNames: (AddressCard *) element
{
return [name compare: element.name];
}
重要的是要注意有两个不同的类:addressCard 和 addressBook。
我知道 compare 方法将 NSOrderedAscending、NSOrderedSame 或 NSOrderedDescending 返回给 sortUsingSelector 方法。但是,这些方法如何对所有内容进行排序?我觉得我错过了一些巨大的东西。例如, compare 方法如何知道要比较数组中的哪些元素?我想将数组的元素 [0] 与元素 [1] 进行比较,然后进行排序,然后比较下一个元素......比较方法是否有我忽略的默认定义?