0

我收到错误:

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
4

1 回答 1

4

(通常)不允许在函数(或方法或其他任何东西)内定义函数。您定义alphabeticSortinside -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...之间的 C 函数@end只是在文件范围内定义的函数,与类无关。

于 2010-09-13T02:03:07.210 回答