在Objective-C周围编写一个C包装

前端之家收集整理的这篇文章主要介绍了在Objective-C周围编写一个C包装前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从OS X中的C项目中调用并使用Objective-C类.现在是开始向所有Objective-C转移的时候了,但是我们需要在一段时间内完成.

如何做到这一点呢?任何人都可以散发光芒并提供一个榜样吗?

解决方法

Objective-C++是C的超集,就像Objective-C是C的超集.它由OS X上的gcc和clang编译器都支持,并允许您实例化并调用Objective-C对象& C中的方法.只要在C模块的实现中隐藏Objective-C头文件导入和类型,就不会感染任何“纯”C代码.

.mm是Objective-C的默认扩展名. Xcode会自动做正确的事情.

所以,例如,以下C类返回1970年1月1日以来的秒数:

//MyClass.h

class MyClass
{
  public:
    double secondsSince1970();
};

//MyClass.mm

#include "MyClass.h"
#import <Foundation/Foundation.h>

double MyClass::secondsSince1970()
{
  return [[NSDate date] timeIntervalSince1970];
}

//Client.cpp

...
MyClass c;
double seconds = c.secondsSince1970();

您将很快发现Objective-C比C编译速度更慢,但是如上所述,将它们的使用隔离到少量的桥接类上是比较容易的.

猜你在找的C&C++相关文章