2011-06-29 14 views
-1

私はクラスMarshViewController.hを持っています。次のコードを使用して、あるviewcontrollerから別のビューコントローラに移動します。iphoneプログラミング+別のビューから別のメモリへの移動

#import "ExpertGameController.h" 
@interface MarshViewViewController : UIViewController<UIAlertViewDelegate> { 
ExpertGameController *nextExpertGame; 
} 
@property(nonatomic,retain)ExpertGameController *nextExpertGame; 

私はそれを合成し、私は以下の方法を使用しています。私はnextExpertGameをリリースしましたが、それでもメモリがリークします。

-(IBAction)expertGame 
{ 

    nextExpertGame=[[ExpertGameController alloc]initWithNibName:@"ExpertGameController" bundle:nil]; 
    [self.navigationController pushViewController:nextExpertGame animated:YES]; 
    [nextExpertGame release]; 

} 

助けていただければ幸いです。

+0

上記のコードでは何も漏れていないので、おそらくExpertGameControllerの中にあります。どのようにあなたのnextExpertGameプロパティを正しく使用していない。コントローラを格納していない場合はプロパティを取り除くか、 'self.nextExpertGame = [[...] ...] autorelease];'を使い、 'dealloc'のnextExpertGameを解放してください。 – Joe

答えて

0

コントローラーを割り当てたときに保持カウントが1になったときに、ナビゲーションコントローラーにプッシュしたときに保持カウントを2にしてから解放したときに、保持カウントを1に戻しました。ナビゲーションコントローラーからそのビューコントローラーをポップすると、保持カウントが0になり、メモリーから割り当てが解除されます。

+0

私は以下を行うことができます - (void)dealloc { [navigationController release]; [super dealloc]; } – xcodelearner

+0

ナビゲーションコントローラーは、アプリケーションデリゲートが所有している必要がありません。アプリが実行されている間は保持する必要があります。 –

0

もう1つのビューから移動するための簡単な方法は、コードを以下に示します。

#import "ExpertGameController.h" 
@interface MarshViewViewController : UIViewController<UIAlertViewDelegate> { 

     //Your declared variables 
} 


-(IBAction) expertGame { 

ExpertGameController *objExpertGameController = [[ExpertGameController alloc] initWithNibName:@"ExpertGameController" bundle:nil]; 

[self.navigationController pushViewController: objExpertGameController animated:YES]; 
[objExpertGameController release]; 

} 

は、この情報がお役に立てば幸い!

関連する問題