Objective c 错误:嵌套函数已禁用,请使用-fnested函数重新启用

Objective c 错误:嵌套函数已禁用,请使用-fnested函数重新启用,objective-c,nested-function,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) { re

我得到一个错误:

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

它(通常)不允许在函数(或方法或任何东西)内定义函数。您在
-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中,在
@实现
之间定义的C函数
@end
只是在文件作用域中定义的一个函数,与类无关。

如果在代码前面加四个空格,它将被格式化为代码。如果在代码前面加四个空格,它将被格式化为代码。