2010-03-10 55 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

相關問題