Web サービスから大きな JSON 文字列 (11MB) を取得しています。JSONKit を使用してデータを解析すると、アプリが 70MB に達し、メモリ警告が表示され、アプリがクラッシュします。
このデータを解析するにはどうすればよいですか?
あなたの最善の策は、イベント駆動型の解析をサポートする YAJL JSON パーサーを調べることです。次に、データ フィードに含まれる JSON を解析できるので、すべてを一度にメモリに保存する必要はありません。
https://github.com/gabriel/yajl-objc
申し訳ありませんが、実際にこの使用法を示すコード例は知りません。
最も簡単な解決策は、サーバーから取得する json サイズを小さくすることです。それができない場合、巨大な JSON を解析する唯一の方法は、遅延評価を使用することです。
遅延評価をサポートするobjective-c用のJSONライブラリがあるとは思いません。ただし、実装することはできます。
SBJson は、データ ストリームの解析をサポートしています。これにより、ドキュメントを少しずつ処理できるため、ドキュメント全体を保持する必要がなくなります。ディストリビューションには、これを使用する方法の 2 つの例が含まれています。最初にStreamParserIntegrationTest.mがあり、次にTweetStreamデモ アプリがあります。これは、HTTP ストリームを 1 日中座って解析し (許可する場合)、各ツイートが入ってくるたびに表示し、破棄する twitter アプリケーションです。
(免責事項:私は SBJson の作成者です。)
11 mb は大きなデータであり、解決策はデータのサイズを最小限に抑えることだけです。JSON サポートは iOS にネイティブではありませんが、まさにこの目的のための優れたフレームワークがあります: http://code.google.com/p/json-framework/
このフレームワークは、未加工の JSON オブジェクトから Objective-C オブジェクト (NSArray、NSDictionary) への変換、およびその逆の変換をサポートしています。