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
只是在文件作用域中定义的一个函数,与类无关。如果在代码前面加四个空格,它将被格式化为代码。如果在代码前面加四个空格,它将被格式化为代码。