0

プロジェクトにUIPopoverController、コンテンツとしてUIDatePickerを含むViewControllerを使用しています。

ボタンをクリックするとポップオーバーが表示されます。ポップオーバーとそのコンテンツが割り当てられた後、アプリケーションメモリは約2.5MiB増加します。

メモリ内にポップオーバーの2つの別々のインスタンスがあるので、それは約5mb増加します。

私の問題は、ポップオーバーが却下された後、そのメモリが解放されないことです。また、ARCを有効にしているため、手動でリリースすることはできません。

ARCで使用したときにポップオーバーが閉じられたときにメモリを解放する方法を教えてもらえますか?

コードは次のとおりです。

-(IBAction)btnDateSelect:(id)sender
{

    CGRect popoverRect;
    appDelegate.objDtPicker = [[ViewDatePicker alloc]init];
    appDelegate.objDtPicker.delegate = self;

    self.popOver = [[UIPopoverController alloc]initWithContentViewController:
    appDelegate.objDtPicker]; 
    popOver.delegate = self;

    if ([sender tag] == 70) 
    {
        popoverRect = [self.view convertRect:[btnFromDate frame] 
                                    fromView:[btnFromDate superview]];
        bFromDate = TRUE;
        bToDate = FALSE;

    }
    else 
    {
        bFromDate = FALSE;
        bToDate = TRUE;
        popoverRect = [self.view convertRect:[btnToDate frame] 
                                    fromView:[btnToDate superview]];
    }


    popOver.popoverContentSize=CGSizeMake(400.0,216.0);
    [popOver presentPopoverFromRect:popoverRect inView:self.view 
           permittedArrowDirections:UIPopoverArrowDirectionDown 
                           animated:NO];
}
4

2 に答える 2

2

私はself.popOver強いプロパティだと思いますか?このプロパティによって保持されます。ビューを閉じるときは、このプロパティを nil に設定できます (デリゲート メソッドを使用)。

于 2012-07-02T10:14:23.757 に答える
0

ポップオーバーの割り当てが解除されていないことが問題なのですか? システムが画像やその他のデータをキャッシュしている可能性があります。メモリ警告の後、余分なメモリ使用量はなくなりますか? (これらのいずれかをシミュレーターでシミュレートできます。) メモリ警告の後に追加のメモリ使用量がなくなった場合、おそらく問題はありません。

"Allocations" または "Leaks" インストゥルメントを使用してアプリケーションを実行してみてください。これにより、ポップオーバーが実際に割り当て解除されているかどうか、および実際に 5 MB を占有しているものを確認できます。

于 2012-07-02T15:45:51.097 に答える