我想知道 C++ 库中是否有 NSData、NSDictionary 和 NSArray 等价物,如果没有,是否有任何已知的流行框架提供这些类?
问候
并非如此,因为这些类的功能在很大程度上受语言的支配。
另一方面,有 std::vector (数组和数据)和 std::map (字典)。这些根本不是等效的,但它们具有相似的目的。
STL 有可以用来代替 NSDictionary 的地图和可以用来代替 NSArray 的向量,但是“转换”当然不是无痛的,因为可能缺少特定的功能并且需要更多的编码。例如,要“模拟” dictionaryWithContentsOfURL:
NSDictionary 的选择器,您将需要在 C++ 中进行额外的编码,以解析 URL,并且——如果它是远程资源——连接并检索它,然后反序列化数据;其他库当然可能会有所帮助(提升?),但关键是如果您需要移植 NSDictionary(和其他)的一些特殊功能,您需要编写更多代码。
另一方面,如果您只使用基本的字典和数组功能,“转换”可能变得相当微不足道。
NSData 的类似论点,可能可以通过std::stringbuf
.
您还可以使用GNUstep库;GNUstep 是一个 GNU 开放的 Cocoa 框架,它提供了您在 Cocoa 上的几乎所有东西(AppKit 和 Foundation 类);GNUstep 存在于 Apple Mac OS X 以外的其他平台上,因此您可以在这些平台上移植 Cocoa 应用程序。使用 Objective-C++,您可以同时使用 STL 和 Cocoa/GNUstep 框架,并利用这两个世界中最好的(在 OO 编程和不同“来源”的类/对象之间的“交互”方面受到限制),理论上(我从来没有尝试了这样的混合,但注意可能会有一些好处,也许)