错误:禁用嵌套函数,使用-fnested-functions重新启用

时间:2010-09-13 01:56:41

标签: objective-c nested-function

我收到错误:

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

1 个答案:

答案 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函数只是在文件范围定义的函数,与该类无关。