您可以像往常一样简单地使用您的 C 代码:
-(void)writeString:(NSString*)data toFile:(NSString*)filename {
FILE* output = fopen([filename UTF8String], "w");
fprintf(output, "%s", [data UTF8String]);
fclose(output);
}
对于其他 .c 文件,只需 #include 相应的标头即可。然后,您可以调用它的函数。
例如,如果这是 foo.h:
int add(int a, int b);
和 foo.c:
#include "foo.h"
int add(int a, int b) {
return a + b;
}
然后在您的 Objective-C 代码 (Bar.m) 中:
-(int)addA:(int)a andB:(int)b {
return add(a, b);
}
这基本上是一个包装器。但是,Objective-C 中的 C 代码不需要包装器。甚至 C++ 函数也不需要包装器,因为有 .mm 文件是 Objective-C++ 源代码。
编辑:
要使用参数调用 C 函数,只需使用参数调用它们。从字面上看,任何有效的 C 程序也是有效的 Objective-C 程序。如果它可以编译为 .c 文件,它将编译为 .m 文件。
要将 C 字符串 ( char*
) 转换为 NSString:
const char* myString = "Hello!";
NSString* myNSString = [NSString stringWithUTF8String:myString];