gpt4 book ai didi

c++ - NSDictionary - C++ 中的 Objective-C 代码

转载 作者:行者123 更新时间:2023-11-30 04:14:52 27 4
gpt4 key购买 nike

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

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

最佳答案

确保将 C++ 类编译为 Objective-C++(.mm 扩展名),你不会有任何问题。我这样做的唯一问题是您无法在 C++ header 中定义 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 对象。

关于c++ - NSDictionary - C++ 中的 Objective-C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com