2010-09-13 43 views
0

我收到提示:錯誤:嵌套功能被禁用,則使用-fnested-功能重新啓用

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 
+0

如果在代碼之前放置四個空格,它將被格式化爲代碼。 – 2010-09-13 02:02:43

回答

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只是在文件範圍內定義的函數,而不是相關的類。