0

私はiOSプログラミングに比較的慣れていないので、私が抱えている問題を説明するために最善を尽くします。物事を片付けるためにいくつかの追加情報を提供できる場合は、教えてください。

現在、アプリ内のUIPopoverController内にUIPickerViewを表示しています。私が抱えている問題は、リークツールを使用してプロファイリングしているときに、ポップオーバーが閉じられるたびにメモリリークがポップアップすることです。ポップオーバーとピッカービューを初期化するためのコードは次のとおりです。

// Show the popover
CGRect cellRect = [tableView rectForRowAtIndexPath:indexPath];

UIViewController *vc = [[UIViewController alloc] init];
[vc setContentSizeForViewInPopover:CGSizeMake(320, 216)];

UIPickerView *pv = [[UIPickerView alloc] init];
[pv setShowsSelectionIndicator:YES];
[pv setDataSource:self];
[pv setDelegate:self];

[[vc view] addSubview:pv];
inputPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[inputPopoverController setDelegate:self];
[pv selectRow:selection inComponent:0 animated:NO];
vc = nil;
pv = nil;

[inputPopoverController presentPopoverFromRect:cellRect inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

inputPopoverControllerは次のように宣言されます

UIPopoverController *inputPopoverController;

ここで、ポップオーバーコントローラーを解放し、ポップオーバーが閉じられるたびに関数が呼び出されることを確認しました。

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
inputPopoverController = nil;}

機器は、次の2つの場所でリークを示しています

[pv selectRow:selection inComponent:0 animated:NO];

[inputPopoverController presentPopoverFromRect:cellRect inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

前もって感謝します。

4

1 に答える 1

0

数日頭を悩ませた後、UIPickerView デリゲート メソッドの 1 つを実装する必要があることがわかりました。ここで私はここで私の答えを見つけました

于 2012-12-05T07:15:56.743 に答える