Objective-C中的非成员函数

Ran*_*cks 5 c objective-c

我想在Objective-C中编写一个独立的函数; 所以基本上是一个C风格的函数,其中有Objective-C调用.例如:

NSString* someFunc()
{
 NSString* str = [[NSString alloc] init];

 return str;
}
Run Code Online (Sandbox Code Playgroud)

我在头文件中声明了该函数,并在其中定义了一个.m文件.但是,该函数似乎没有编译,因为链接器抱怨丢失的符号.我想也许我应该把它放在一个C文件中,但当然它在我身上骂我在BASI写的Objective-C Nonsense ... C.

做什么?

Ran*_*cks 3

事实证明这是我犯的一个愚蠢的错误。该函数是在 .m 文件中定义的,但我试图在 .mm 文件(C++/Objective-C)中使用它,所以它自然会寻找 C++ 损坏的符号。推杆

#ifdef __cplusplus
extern "C" {
#endif

// Declaration

#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)

头文件中修复了这个问题。