我一直在深入研究Apple与MapKit相关的示例代码,特别是覆盖。我注意到代码的大部分内容,即需要尽可能高效的部分,都是用C函数编写的。如果我想在课堂之间分享这些功能,我的选择是什么?显然我不能将它们声明为类方法并共享类,那么允许多个类访问相同C函数的最佳方法是什么?
答案 0 :(得分:2)
Objective C是ANSI C的超集。因此,除非特别声明为静态,否则所有C函数都是自动全局的,在任何地方共享,并且可以从任何地方调用。即使在Objective C类实现中实例化C函数也是如此。
只需输入extern声明,例如:
extern myType my_C_function(parameterType foo);
在任何Objective C类的.h头文件中,您要从中调用(非静态)C函数。
答案 1 :(得分:1)
Reentrancy是关键。确保您不使用C
函数中常量引用之外的任何共享数据。此外,如果回调需要对objective-C类的引用,那么可以将其作为void指针传递。