2012-01-14 34 views
0

メモリ不足の警告を4回発した後、機器がメモリリークを表示していないのに、メモリ割り当てでライブが動作しています。4.7MBに上がり、すべてのバイトが79.0 MBまで上がります。すべてのヘルプは非常にリークすることなく、メモリ使用量を増やすメモリ不足の警告後にアプリケーションがクラッシュする

for (int i = 0; i<3; i++) 
{ 

    UIImage *rendered_image; 
    UIGraphicsBeginImageContextWithOptions(sub_view.bounds.size, NO, 0.0); 

    [appdelegate.arrimages removeAllObjects]; 
    [appdelegate.arranimations removeAllObjects]; 

    NSString *oldgroup = [[NSString alloc] init]; 
    NSString *currentgroup = [[NSString alloc] init]; 

    for(int i=0; i<[sub_view.data count]; i++) 
    { 

     oldgroup = (i>0) ? [sub_view.group objectAtIndex:(i-1)] : [sub_view.group objectAtIndex:i]; 
     currentgroup = [sub_view.group objectAtIndex:i]; 

     /* 
     IF DIFFERENT GROUP NAME RECEIVED 
     1-GET NEW INSTANCE OF IMAGE 
     2-SAVE PREVIOUS IN ARRAY 
     */ 



    if (![oldgroup isEqualToString:currentgroup]) 
     { 

      rendered_image = UIGraphicsGetImageFromCurrentImageContext(); 

      [self SaveImagesOfAnimation:[self compressImageDownToPhoneScreenSize:rendered_image]]; 

      [appdelegate.arranimations addObject:[sub_view.anim objectAtIndex:i]]; 

      UIGraphicsEndImageContext(); 
      UIGraphicsBeginImageContextWithOptions(sub_view.bounds.size, NO, 0.0); 

     } 

     id element = [sub_view.data objectAtIndex:i];  

     color = [sub_view.fillColor objectAtIndex:i]; 

     [color setFill]; 
     [element fill]; 

     [[UIColor blackColor] setStroke]; 
     [element stroke]; 

    } 

    rendered_image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    [self SaveImagesOfAnimation:[self compressImageDownToPhoneScreenSize:rendered_image]]; 

} 
+1

インストゥルメントには、割り当てたオブジェクトの種類と正確なスタックトレースが表示されるため、すぐに把握できるはずです。 – Costique

+0

このリンクを確認するhttp://stackoverflow.com/questions/6425043/how-i-can-display-an-alert-when-i-received-memory-warning-level-2-in-iphone-sdk/6425084# 6425084 –

答えて

0

を理解されるであろう、この時点

は、あなたが解放したことがないデータを格納している、とあなたはまだそれへの参照を保持していることを意味します。

これは通常、NSMutableArrayのようにデータを入れたときに自動的に拡大するデータ構造の1つが責任を負うことを意味します。 NSMutableArrayに置かれた項目は、決して解放されず、配列からの参照があるため、漏れとして検出されないため、メモリプロファイラは漏れを検出しません。

編集:見た目の明白な場所がない場合は、これを解決する一般的な方法については、上部の@Costiqueからのコメントを参照してください。あなたはすぐにそれが出 把握することができるはずですので

インスツルメンツはまた、あなたが割り当てられ、 正確なスタックトレースきたオブジェクトの種類を表示することができます。

+0

お返事いただきありがとうございます。私のコードは間違っていることをご指摘ください。 –

+0

私は質問を更新し、コードを入れてください。 –

+0

は、正しいトラックに私を置くことができるものをまだ待っています –

関連する問題