4

アプリでJSONKitを使用してきましたが、Xcode 4.5.1 にアップグレードして分析を実行したところ、Xcode は JSONKit コードでメモリ リークの可能性を報告しています。

/Users/aleksa.topic/SVN/Apple/iTTChart/trunk/iTTChart/Other Sources/JSONKit.m:682:23: Memory is never released; potential leak of memory pointed to by 'array' (そして、辞書にも同じ潜在的なリークが発生します)。

誰もこれについて経験がありますか?それは本当にメモリ リークを引き起こしているのでしょうか、それとも Xcode が十分に分析していないだけなのでしょうか?

4

3 に答える 3

4

これは、静的アナライザーでの誤検知です。それを解決しようとしているバグレポートがあります。

于 2012-10-29T16:18:16.137 に答える
2

このリンクを参照してください。- とマークされた行を + とマークされた行に置き換えるだけです。

-    if((array = [array init]) == NULL) { return(NULL); }
+    if([array init] == NULL) { free(array); return(NULL); }

-    if(JK_EXPECT_F((array->objects = (id *)malloc(sizeof(id) * array->capacity)) == NULL)) { [array autorelease]; return(NULL); }
+    if(JK_EXPECT_F((array->objects = (id *)malloc(sizeof(id) * array->capacity)) == NULL)) { free(array); return(NULL); }

-    if((dictionary = [dictionary init]) == NULL) { return(NULL); }
+    if([dictionary init] == NULL) { free(dictionary);return(NULL); }

-    if(JK_EXPECT_F((dictionary->entry = (JKHashTableEntry *)calloc(1UL, sizeof(JKHashTableEntry) * dictionary->capacity)) == NULL)) { [dictionary autorelease]; return(NULL); }
+    if(JK_EXPECT_F((dictionary->entry = (JKHashTableEntry *)calloc(1UL, sizeof(JKHashTableEntry) * dictionary->capacity)) == NULL)) { free(dictionary); return(NULL); }
于 2013-05-24T09:42:24.650 に答える