我收到错误:
nested functions are disabled, use -fnested-functions to re-enable.
可能是一种语法。我只是无法绕过它。
- (NSArray *)sortedVariants {
NSInteger alphabeticSort(id object1, id object2, void *reverse) {
if ((NSInteger *)reverse == NO) {
return [[object1 name] localizedCaseInsensitiveCompare:[object2 name]];
}
return [[object2 name] localizedCaseInsensitiveCompare:[object1 name]];
};
return [variants sortedArrayUsingFunction:alphabeticSort context:NULL];
}
@end
答案 0 :(得分:4)
(通常)不允许在函数(或方法或其他内容)中定义函数。您在alphabeticSort
内定义-sortedVariants
,对吗?
取而代之的是
NSInteger alphabeticSort(id object1, id object2, void *reverse) {
if ((NSInteger *)reverse == NO) {
return [[object1 name] localizedCaseInsensitiveCompare:[object2 name]];
}
return [[object2 name] localizedCaseInsensitiveCompare:[object1 name]];
};
- (NSArray *)sortedVariants {
return [variants sortedArrayUsingFunction:alphabeticSort context:NULL];
}
请注意,在Objective-C中,@implementation
... @end
之间定义的C函数只是在文件范围定义的函数,与该类无关。