2

UIAlertview を使用してテキストを入力すると、正常に動作します。ただし、alertview を閉じた後、alertview を開く前にメモリが 17MB 以上増加しています (9MB から 26 MB へ)。Instrument Allocation を使用してヒープ メモリを測定し、Activity Monitor を使用して測定しました。どちらも同様の結果を示しています。別のアプリに切り替えると、alertview によって増加したメモリが適切なレベルまで減少します。正常ですか?私の環境はiPhone4+iOS6です。試すためのコードを次に示します。

   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"input caption" message:@"text"
                                                   delegate:self cancelButtonTitle:@"cancel"  otherButtonTitles:@"OK", nil];
   [alert show];
   [alert release];

ありがとうございました。


Naveed S さん、Purr さん、どうもありがとうございました。私はあなたの提案に正しく従うかどうか確信が持てません。しかし、アクティビティモニターを使用してリアルメモリを監視すると、アラートビューを閉じた後もメモリが約20 MB増加します。[アラート ショー] の後に [アラート リリース] を削除して、

  [alert show];
 //[alert release];

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
 { [alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
  [alertView autorelease];                                                      }      

さらに、ホームを押した後にアプリがバックグラウンド モードになると、メモリが減少します。(これは私の以前のコードと似ています)。放棄メモリを正しく監視するにはどうすればよいですか。どうやって見るのが正解なのかもわからない……。

ところで、私の元のコードはこちらの投稿に従います。 Uialertview とメモリ管理

4

1 に答える 1

1

1 つには、alertView を自動解放する必要があります。-alertView:didDismissWithButtonIndex:によって呼び出されるUIAlertViewため、メソッドが返されたとき、alertView オブジェクトは引き続き有効 ( ではない-release'd) である必要があります。

さらに良いことに、ARCに変換して手動-retainで完了-releaseします-autorelease;)

ARC に変換しない場合は、次のようにします。元の投稿のコードから -release を削除し//CRASH-alertView:didDismissWithButtonIndex:メソッドの のコメントを外して、そこに変更-releaseします-autorelease

于 2013-01-22T13:01:46.493 に答える