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

发布于 2024-09-18 15:38:54 字数 556 浏览 7 评论 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

I'm getting error:

nested functions are disabled, use -fnested-functions to re-enable. 

Could be a syntax. I just can't wrap my head around it.

- (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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风无影 2024-09-25 15:38:54

(通常)不允许在函数(或方法或其他任何内容)内定义函数。您在 -sortedVariants 内定义 alphabeticSort,对吧?

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 函数只是在文件范围内定义的函数,与班级。

It's not (usually) allowed to define a function inside a function (or a method or whatever.) You define alphabeticSort inside -sortedVariants, right?

Instead do

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];
}

Note that in Objective-C, a C-function defined between @implementation ... @end is just a function defined at the file scope, not associated to the class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文