【问题标题】:NSKeyedArchiver internal formatNSKeyedArchiver 内部格式
【发布时间】:2009-12-20 21:22:38
【问题描述】:

您好,我需要将 NSKeyedArchiver 类加载到 C++/CLI 对应项。有没有办法获取 NSKeyedArchiver 的内部格式?
另一种选择是将整个保存和打开代码重写为适用于 Mac 和 Windows 的纯 C++。

非常感谢。

【问题讨论】:

    标签: cocoa format internal nskeyedarchiver


    【解决方案1】:

    所以你的限制似乎是:

    1. 在 Windows 和 Mac 上都易于解析。
    2. 3D 建模数据,因此格式需要高效

    如果您想要快速而肮脏的东西,请使用二进制 plist(可能还需要 gzip)。你也可以试试Google's protocol buffers,但我没有这方面的经验。还有一些 Foundation 的开源实现——Cocotron 可能对你最有用。

    【讨论】:

    • 我想我会用纯 C++ 编写一些快速而肮脏的自定义格式,使用 STL 中的标准 ofstream/ifstream。 Cocotron 看起来很有趣,如果格式的实现与 Apple 相同的话。但我认为阅读 Cocotron 内部工作比两个平台的简单 ofstream/ifstream C++ 实现需要更多时间。感谢您的想法。
    • 我有 75% 的把握肯定是一样的,因为我相信 NSKeyedArchiver 用于 nib 文件。
    【解决方案2】:

    如果您没有序列化任何特定于 Objective-C 的内容,那么只需使用 XML 属性列表。

    【讨论】:

    • 问题是我在 3d 应用程序中序列化建模数据,它在 XML 中会非常庞大​​。所以最好是一些二进制形式。我可以用纯 C++ 编写序列化,但我使用 NSKeyedArchiver 编写代码,如果内部格式不难,我可以为 C# 或 C++/CLI 编写类似的类。感谢您的快速答复。
    • 那么您真的没有任何理由使用 Apple 的数据格式。
    • @Azeem.Butt 我有点和他一样,这是有原因的,首先我的应用程序只是 mac,所以我在 3 年后现在使用 Apple 的格式,我想将它传递给 Windows。如果我想放弃 Apple 的格式,我将在向后 mac 兼容性方面遇到麻烦......所以也许我应该尝试使用 Cocotron:-/
    猜你喜欢
    • 2011-01-27
    • 2016-04-02
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多