我需要混合使用 Objective-C 和 C++。我想将所有 C++ 内容隐藏在一个类中,并保持所有其他简单的 Objective-C。问题是我想要一些 C++ 类作为实例变量。这意味着它们必须在头文件中被提及,该文件被其他类包含并且 C++ 开始传播到整个应用程序。到目前为止,我能够提供的最佳解决方案如下所示:
#ifdef __cplusplus
#import "cppheader.h"
#endif
@interface Foo : NSObject
{
id regularObjectiveCProperty;
#ifdef __cplusplus
CPPClass cppStuff;
#endif
}
@end
这行得通。实现文件有一个mm
扩展名,因此它被编译为与 C++ 混合的 Objective-C,#ifdef
解锁 C++ 的东西,然后我们开始了。当其他一些纯 Objective-C 类导入标头时,C++ 内容被隐藏,并且该类看不到任何特殊内容。这看起来像一个黑客,有更好的解决方案吗?