在Objective-C类之间共享C函数

时间:2011-12-01 19:51:55

标签: iphone objective-c c function optimization

我一直在深入研究Apple与MapKit相关的示例代码,特别是覆盖。我注意到代码的大部分内容,即需要尽可能高效的部分,都是用C函数编写的。如果我想在课堂之间分享这些功能,我的选择是什么?显然我不能将它们声明为类方法并共享类,那么允许多个类访问相同C函数的最佳方法是什么?

2 个答案:

答案 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指针传递。