ошибка: вложенные функции отключены, используйте -fnested-functions для повторного включения - PullRequest
0 голосов
/ 13 сентября 2010

Я получаю сообщение об ошибке:

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 Ответ

4 голосов
/ 13 сентября 2010

Нельзя (обычно) определять функцию внутри функции (или метода, или чего-то еще). Вы определяете 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 функция C, определенная между @implementation ... @end, является просто функцией, определенной в области видимости файла, а несвязанный с классом.

...