0

ここに画像の説明を入力してくださいここに画像の説明を入力してくださいたくさんの画像をダウンロードしてデータを解析するJSONデータの解析に取り組んでいます。解析用の次のコードがあります

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
  {   

     NSString *responseString = [[NSString alloc] initWithData:webdata encoding:NSASCIIStringEncoding];
     [webdata release];
     [connection release];
     NSDictionary *values = [(NSDictionary*)[responseString JSONValue] objectForKey:@"UserId"];
     NSDictionary *Active = [(NSDictionary*)[responseString JSONValue] objectForKey:@"Active"];
     [responseString release];
     NSString *UserID=[NSString stringWithFormat:@"%@",values];
     NSString *Status=[NSString stringWithFormat:@"%@",Active];
     [WSDelegate WServiceResponseMsg:@"WS_Authenticate_User" withResponse:UserID forParam:Status];
}

解析用の上記のコードを持つクラスがたくさんありますが、SBJSONパーサーが原因で、しばらくするとアプリがクラッシュします。インストルメントでは、メモリ不足の警告が原因でアプリがクラッシュします。ここに画像の説明を入力してください

4

3 に答える 3

1

ほとんどの開発者が SBJSONParser を使用しているときに、メモリ リークがあると考えるのは非常に間違った想定です。SBJSONParser にはリークがなく、コードにリークが発生することもありません。INSTRUMENTS がリークの原因が SBJSONParser であることを示しているのは事実ですが、それは別のことを示しています。リークは、SBJSONParser API の実装方法が原因です。コードで何か間違ったことをしたに違いありません。

楽器の漏れに行きます。拡張詳細ツールバーを開き、リークのあるコード行を確認します。インスツルメンツは、漏れのある最も近い場所を教えてくれます。

于 2012-10-29T13:17:27.533 に答える
0

Better option would be to use NSJSONSerialization that come as a part with iOS 5 and above

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
  {  
    NSMutableDictionary *values = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingMutableContainers error:&error];
}
于 2012-10-29T13:22:17.127 に答える
0

最終的に解決策が得られました.JSON解析のために以下の行を使用してください.NSMutableDictionaryを削除してidを使用してください:

 NSError *jsonError = nil;

 id allValues = [NSJSONSerialization JSONObjectWithData:webdata
                                                   options:0
                                                     error:&jsonError];

 NSArray *array = [allValues objectForKey:@"Contestants"];
于 2012-11-26T07:16:07.183 に答える