0

ビュー コントローラーの loadView メソッドでプログラムによってビューを作成しています。次のように:

-(無効)loadView {

HPSFormView* viewForThisController = [ [ HPSFormView alloc ] initWithFrame:CGRectZero ] ;
viewForThisController.controller = self; // Set a reference back to this controller so the View knows who to delegate stuff to when > adding controls
self.view = viewForThisController; // Set the view for this controller to be the main menu view 

}

ビュー コントローラーとビューの 3 つの異なるペアに対して、この手法に従います。ビュー コントローラーを UINavigationController スタックにプッシュしています。各ビューには、プッシュを使用するボタンが含まれています。次のように:

-(void)buttonTapped:(id)sender  {
    HPSFormController* formVC = [ [ HPSFormController alloc ] initWithNibName:nil bundle:nil ];
    [(UINavigationController*) self.view.window.rootViewController pushViewController:formVC animated:YES]; 
}

viewDidLoad にはコードがありません。実際、ビュー コントローラーにはまったくありません。

すべて正常に動作しますが、iOS シミュレーター内で Simulate Memory Warning を実行すると、アプリがクラッシュします。問題は、自分のビューを loadView 内の「ローカル」変数として定義する方法にあると思います。

私のloadViewが問題ないように見えるかどうか、または無効な参照などを避けるためにloadViewを別の方法で定義する必要があるかどうかを誰かに教えてもらえますか.

どうもありがとう。

4

1 に答える 1

0

問題は、ビューがコントローラーへの参照を保持していたことです。ビューがアンロードされると、コントローラーの参照が範囲外になりました。

于 2012-05-31T09:02:58.927 に答える