0

グローバルオブジェクトを宣言しました:

YViewController * yViewController

アプリの起動時に私は電話をかけています:

[self methodOne];

メソッドはこれを行います:

-(void)methodOne
{
 yViewController = [[YViewController alloc] initWithNibName:@"YViewController" bundle:nil];
 self.window.rootViewController=yViewController;
}

YViewControllerでボタンがクリックされたとき、私は次のように呼び出しています。

[self methodTwo];

メソッドはこれを行います:

-(void)methodTwo
{
  XViewController * xViewController = [[XViewController alloc] initWithImage:myImage];
  self.window.rootViewController=xViewController;
}

戻るボタンをタップするXViewControllerと、に[self methodOne];戻りますYViewController

xViewController問題は、ARCを使用しているときに、オブジェクトをフラッシュ/解放できなかったことです。また、楽器をチェックするときは、との間を行ったり来たりしながら、記憶がXViewController増え続けます。XViewControllerYViewController

ARCを使用してこのような状況でメモリを管理するにはどうすればよいですか?

4

1 に答える 1

1

XViewController のソースが開いている場合は、ナビゲーションに合わせて微調整します。いずれかの方法 ..

さて、基本的に毎回 ViewController の新しいオブジェクトを作成しているため、メモリが山積みになっています。

クラス変数として「XViewController * xViewController」と「YViewController * yViewController」が必要であり、メソッドは次のようなものにする必要があります。

オブジェクトが存在するかどうかを確認し、存在する場合は再度割り当てないでください。

-(void)methodTwo
{
 if(xViewController == nil)
 {
   xViewController = [[XViewController alloc] initWithImage:myImage];
 }
  self.window.rootViewController=xViewController;

}
于 2012-07-24T07:10:50.600 に答える