JSONKit 实现上的错误
Posted
技术标签:
【中文标题】JSONKit 实现上的错误【英文标题】:Errors on JSONKit implement 【发布时间】:2012-04-04 12:00:02 【问题描述】:将 JSONKit.h 和 JSONKit.m 文件导入我的项目后,我收到以下错误。我浏览了又浏览了,但似乎没有人遇到过这些问题?
我所做的只是导入文件并构建,然后我得到了这个
是我忘记导入还是...??????
【问题讨论】:
【参考方案1】:您可以在 JSONKit 文件中禁用 ARC(自动引用计数)。
一般步骤是:
-
转到您的项目设置,在 Build Phases > Compile Sources 下
选择要禁用 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 对象,假设它们已由系统分配。这行不通。以上是关于JSONKit 实现上的错误的主要内容,如果未能解决你的问题,请参考以下文章
JSONKit +lidenbrock 与。 RestKit?(使用CoreData)
JSONKit 给出解析错误,但 JSONLint.org 说它是有效的