2010-03-10 93 views
2

http://github.com/gabriel/yajl-objc有没有人有使用YAJL的Objective-C绑定的经验?

我已经试过SBJSON,虽然它的工作原理,我正在寻找其他选项来改善解析速度和内存消耗。这个库的使用似乎并不像SBJSON那么简单,我不确定如何开始使用yajl。

像这样:

NSArray *parsed = [data yajl_JSON]; 

结果如下错误:

-[NSConcreteMutableData yajl_JSON]: unrecognized selector sent to instance 0x5372180

试图解析在同样的问题一个NSString对象的结果。我可以看到界面,但似乎没有实现......我没有正确链接到静态库吗?

Google的使用示例很少。该项目本身的文档只说了关于从json数据/字符串生成对象的以下内容。

#import "NSObject+YAJL.h" 

NSData *JSONData = [NSData dataWithContentsOfFile:@"example.json"]; 
NSArray *arrayFromData = [JSONData yajl_JSON]; 

NSString *JSONString = @"[\"Test\"]"; 
NSArray *arrayFromString = [JSONString yajl_JSON]; 

这看起来几乎和我试过的一样。我在这里错过了什么?

回答

7

你一定错过了一部分:

Under 'Other Linker Flags' in the Test target, add -ObjC and -all_load (So NSObject+YAJL category is loaded).

我已经使用YAJL,直到我跑在释放模式的应用程序没有问题,然后我得到了同样的错误,你 - 原来,我已经只将这些标志添加到调试模式,而不是所有这些标志。

一般来说,我可以推荐YAJL,它肯定比其他所有替代品都快(见benchmark results on my blog)。

+0

运行。 YAJL的输出似乎不符合SBJSON的......即使当根对象是一个属性列表时,YAJL是否总是产生一个数组作为输出? – akaii 2010-03-30 11:11:39

+0

使用-ObjC和-all_load的替代方法是使用-force_load。在使用-all_load导致链接错误的情况下,这可能会更好。 – ThomasW 2011-02-16 08:29:43

相关问题