1

是否可以NSDictionaryC++类中使用?我知道,我可以在C++中使用Objective-C类(http://philjordan.eu/article/mixing-objective-c-c++-and-objective-c++),但是对于,我需要标题......但如果我做,它编译失败。NSDictionary#import

PS:我知道,我不应该混合使用 Objective-C(++)C++,但我正在编写多平台 OpenGL 应用程序,并且对于 EAGL 初始化,输入参数之一是NSDictionary. 我可以在Objective-C中初始化 OpenGL ,但这会破坏我的 OOP 设计。

4

1 回答 1

2

确保将 C++ 类编译为 Objective-C++(.mm 扩展名),你不会有任何问题。我这样做的唯一问题是您无法在 C++ 标头中定义 Objective-C++ 类型。因此,我改为使用 void* 并将其转换为 void* 使用

pVoidDict = (__bridge_retained void*)[NSDictionary dictionary];

您需要执行桥接演员才能使用它:

unsigned int dictCount = [(__bridge NSDictionary*)pVoidDict count];

唯一的问题是你必须记住在最后释放它。您可以通过将其转换回 NSDictionary 来执行此操作,如下所示:

NSDictionary* dict = (__bridge_transfer NSDictionary*)pVoidDict;

这会将它返回给 ARC 控制,并且当析构函数退出时,它将按照标准 ARC 规则添加到自动释放池中。

它看起来不是特别好,但我在跨平台库中使用了很多,这样我就可以用 C++ 类包装 Objective-C 对象。

于 2013-09-05T18:13:03.520 回答