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

関数(またはメソッドなど)内で関数を定義することは(通常)許可されていません。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...の間で定義された C 関数@endは、ファイル スコープで定義された単なる関数であり、クラスに関連付けられていないことに注意してください。

于 2010-09-13T02:03:07.210 に答える