【问题标题】:Errors on JSONKit implementJSONKit 实现上的错误
【发布时间】:2012-04-04 12:00:02
【问题描述】:

JSONKit.hJSONKit.m 文件导入我的项目后,我收到以下错误。我浏览了又浏览了,但似乎没有人遇到过这些问题?

我所做的只是导入文件并构建,然后我得到了这个

是我忘记导入还是...??????

【问题讨论】:

    标签: iphone ios xcode jsonkit


    【解决方案1】:

    您可以在 JSONKit 文件中禁用 ARC(自动引用计数)。

    一般步骤是:

    1. 转到您的项目设置,在 Build Phases > Compile Sources 下
    2. 选择要禁用 ARC 的文件并添加 -fno-objc-arc 编译器标志。您可以通过选择文件然后按“Enter”键一次为多个文件设置标志。

    更多详情请参考这篇帖子:iOS 5 Best Practice (Release/retain?)

    希望对你有帮助。

    编辑

    经过讨论,我们还有一些其他的方案来解决这个问题。例如,您可以将 JSONKit 转换为 ARC 兼容的。但是根据Mike Weller的说法,转换起来会很困难,因为JSONKit使用malloc来管理内存。

    我认为使用-fno-objc-arc编译器标志是一种低风险且方便的解决问题的方法。

    【讨论】:

    • @ParthBhatt 是的,我同意。必须有一些其他的方法可以解决这个问题。例如,我们可以将 JSONKit 更改为其他支持 GCD 的 json 库。在我看来,使用 -fno-objc-arc 编译器标志是解决此问题的低风险方法。
    【解决方案2】:

    tangqiaoboy 的回答会解决这些错误,但您也可以考虑使用 NSJSONSerialization 类。它使将 NSDictionarys 和 NSArrays 转换为 JSON 变得非常容易,反之亦然。

    祝你好运!

    【讨论】:

    • 据我所知,NSJSONSerialization只存在于ios5中。如果我们要支持 ios4,我们必须使用 3rd part lib。
    【解决方案3】:

    您可以按照以下步骤将您的项目转换为ARC 兼容的

    转到Edit menu -> Refactor -> Convert to Objective-C ARC...

    或者,如果您 do not 想在当前项目中使用 ARC,请按照 tangqiaoboy 的步骤操作。

    【讨论】:

    • JSONKit 不适用于 ARC,因为它是自定义内存管理。
    • @MikeWeller:我目前正在使用带有 ARC 的 JSONKit 没有任何问题??我认为您从未尝试过使用 ARC 的 JSONKit!
    • 因为 JSONKit 明确不支持它。它在内部使用 malloc 和 free 来分配对象内存。 ARC 不适用于自定义对象分配。
    • @Devang 您可以在 ARC 项目中使用 JSONKit。正如这个答案所暗示的,您不能将 JSONKit 编译或转换为启用 ARC 的代码。您需要更改 JSONKit 文件的编译器设置。
    • JSONKit 使用 malloc 为 Objective-c 对象分配内存。在 ARC 下,您必须使用 alloc 分配对象。否则 ARC 将尝试释放 JSONKit 对象,假设它们已由系统分配。这行不通。
    猜你喜欢
    • 2012-05-29
    • 2023-03-04
    • 2017-03-11
    • 2011-05-09
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多