2011-12-20 8 views
1

誰かが私を助けたり、もっと説明してくれる人がいますか?未知のヒープ成長

ボタンを使用してUIPickerViewを割り当ててself.viewに追加するコードを最小限に抑えます。同じボタンを押すと、UIPickerViewがself.viewから削除され、解放されます。

UIPickerViewを削除するたびにInstrutmentsでHeapShotを実行しました。私はときには、0バイトの変更、4xxバイト、...ヒープの成長の2Kバイトと4Kバイトがあることがわかりました。リーケージはありません(赤い棒)。

実際、私の懸念は、ヒープの使用量が大きくなっている場合です。最後に、私のアプリケーションがクラッシュし、今の場合です。私は写真を撮るのを25回行うと、私のサーバーに送信すると、ヒープは、MB(Instructmentsをチェックすることによって明らかな漏れはありませんが1Xに成長する。

これ以上の提案?ここ

は、ボタンのための私のコードです。私の割り当てと解放corretある

- (void) nextButtonClicked { 
    if (!pickerShown) { 
     UIPickerView *pickervTemp = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 200.0, 320.0, 216.0)]; 
     self.locationPicker = pickervTemp; 
     [pickervTemp release]; 
     [_locationPicker setDelegate:self]; 
     [_locationPicker setShowsSelectionIndicator:YES]; 
     [self.view addSubview:_locationPicker]; 
     pickerShown = YES; 
    } else { 
     pickerShown = NO; 
     [_locationPicker removeFromSuperview]; 
     [_locationPicker release]; 
     _locationPicker = nil; 
    } 

    return; 
} 

答えて

0

UIPickerViewが個性を持っているようだ。UIWebViewのような多くのあなたは、あなたが後でそれらを捨てている場合でも、あまりにも頻繁に物事を作成する必要はありません。そのない漏れなく、ヒープが上がります。

問題を解決するには、一度ピッカーを作成し、親ビューコントローラを解体するときにそれを破棄するだけで再利用できるようにします。

+0

ありがとうございました。それも私の考えです。 UIオブジェクトが割り振られ、解放されたとき、オブジェクトの対応するdeallocが呼び出されて実行されているのを見たとしても、ヒープはまだ成長しているようです。 – SkyEagle888

関連する問題