我试图将一个C风格的函数放在Objective-C类的头文件中。 (我的术语在这里可能是错的 - 我只是习惯于编写Objective-C类方法而不是函数)。它看起来如下:
// Sort function
NSInteger sort(NSString *aString, NSString *bString, void *context);
NSInteger sort(NSString *aString, NSString *bString, void *context) {
return [aString compare:bString options:NSNumericSearch];
}
不可避免地导致:
在'{'令牌
之前预期'=',',',';','asm'或'属性'
关于我缺少什么的任何想法?谢谢。
答案 0 :(得分:11)
我的猜测是你将函数定义放在类的@interface中。相反,请确保C样式函数声明不在Objective-C @interface声明中:
// declare C functions here
NSInteger sort(NSString *aString, NSString *bString, void *context);
@interface MyClass : NSObject
{
// class instance vars
}
// class properties & instance methods
@end
答案 1 :(得分:2)
您的函数正文需要位于.m文件中而不是标题中。
只要您的函数声明(NSInteger sort(NSString *aString, NSString *bString, void *context);
)保留在标题中,您仍然可以从导入标题的任何位置访问排序函数。
答案 2 :(得分:1)
在声明C-Styled方法时,您必须忘记 - 或+。只需在@end
语句之前将该方法声明为标准C语言:
void function_name(int, int);