3

各ビューに UIDatePicker を持つ複数のビュー コントローラーを設定しています。リーク ツールを使用してテストを開始しましたが、日付ピッカーからのリークはありません。次に、割り当てツールを使用してテストを開始しましたが、ここですべての問題が見つかりました。viewDidLoad で各日付ピッカーが初期化されるたびに、datepicker モードを次のように設定します。

datePicker.datePickerMode = UIDatePickerModeDate;

日付ピッカーを含むビュー コントローラーが表示されるたびに、「Malloc 392 KB」が複数割り当てられ、最終的にアプリがクラッシュします。割り当てツールをさらに掘り下げると、責任のある呼び出し元は [UISectionRowData:RefreshWithSection....] であることが示されています。これにアプローチして修正する方法がわかりません。どんな助けでも素晴らしいでしょう。割り当てツールのスクリーンショットがいくつか添付されています。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

1

UIDatePickerスルーコーディングをしてみてください。必要なときに初期化します。初期化しないでviewDidLoadください。viewWillAppearボタンがあると言って、タップすると初期化しますUIDatePicker

ユーザーが日付の選択を終了したら、スーパービューから削除しdatePicker=nil;ます。そのようにしてメモリを節約できます。メモリは UIDatePicker が表示されている間だけ使用されます。

于 2013-09-14T10:59:43.287 に答える
1

ラインだと思います

datePicker.datePickerMode = UIDatePickerModeDate;

おそらく誤解を招く可能性があり、おそらくリークを引き起こしている次の行です

date.inputView = datePicker;

私の推測では、日付にはオブジェクトを保持している合成されたinputView変数があります。この行で alloc と init を実行していて、autorelease を実行していない場合...

datePicker = [[UIDatePicker alloc]init]

これはリークだと思いますが、後でリリースを呼び出す可能性があるため、言いにくいですが、そうでない場合はこれが私の推測です。

于 2013-01-07T16:33:53.043 に答える