我正试图围绕块编程,目前陷入这个问题
char *myCharacters[3] = { "TomJohn", "George", "Charles Condomine" };
qsort_b(myCharacters, 3, sizeof(char *), ^(const void *l, const void *r) {
char *left = *(char **)l;
char *right = *(char **)r;
return strncmp(left, right, 1);
});
在第二行块参数^(const void *l, const void *r)
,它从那里得到它的参数值。
来自 Apple块编程主题文档:
可可块
Cocoa 框架中的一些方法将块作为参数,通常要么对对象集合执行操作,要么在操作完成后用作回调。下面的例子展示了如何使用带有 NSArray 方法 sortedArrayUsingComparator: 的块。该方法接受一个参数——块。为了说明,在这种情况下,块被定义为 NSComparator 局部变量:
“在这种情况下,块被定义为 NSComparator 局部变量”是什么意思?
这是提供的代码示例
NSArray *stringsArray = @[ @"string 1",
@"String 21",
@"string 12",
@"String 11",
@"String 02" ];
static NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch |
NSNumericSearch |
NSWidthInsensitiveSearch |
NSForcedOrderingSearch;
NSLocale *currentLocale = [NSLocale currentLocale];
NSComparator finderSortBlock = ^(id string1, id string2) {
NSRange string1Range = NSMakeRange(0, [string1 length]);
return [string1 compare:string2
options:comparisonOptions
range:string1Range
locale:currentLocale];
};
NSArray *finderSortArray = [stringsArray sortedArrayUsingComparator:finderSortBlock];
NSLog(@"finderSortArray: %@", finderSortArray);
从哪里^(id string1, id string2)
得到它的参数值?