2011-12-03 3 views
0

MyAppDelegateはバックグラウンドを実行しているため、この間にいくつかのビューを更新する必要があるため、作成される各コントローラへの参照を保存しています。AppDelegateに保存されているコントローラの保持カウントを処理する方法は?

@interface MyAppDelegate : NSObject <UIApplicationDelegate> { 
    SomethingController *currentSomethingController; 
} 
@property (nonatomic, retain) SomethingController *currentSomethingController; 

これは、コントローラを開くために行われます

- (void)openSomethingController { 
    MyAppDelegate * app = [[UIApplication sharedApplication] delegate]; 
    app.currentSomethingController = [[SomethingController alloc] init]; 
    [self presentModalViewController:app.currentSomethingController animated:NO]; 
} 

そして、これは、それを閉じるために、コントローラ内部で呼び出されます。MyAppDelegateコントローラで

- (void)dismissSelf 
{ 
    MyAppDelegate * app = [[UIApplication sharedApplication] delegate]; 
    [app.currentSomethingController release]; 
    app.currentSomethingController = nil; 
[self dismissModalViewControllerAnimated:NO]; 
} 

は、コントローラにメッセージを送信しています:

- (void)longRunningBackgroundTask { 
    [currentSomethingController performSelectorOnMainThread:@selector(updateData) withObject:nil waitUntilDone:YES]; 
} 

私がProduct-> Analyzeを実行すると、「潜在的なリーク」と「間違った減少」の警告が表示されます。これを行う正しい方法や私のアプローチが大丈夫だとすれば、分析ツールにこれらの行を無視するように指示するにはどうすればよいですか?

答えて

0

あなたのコードはうまくいくように見えますが、なぜあなたはそれをやっていますか?そしてそれは、あなたのコードを読んで部外者に混乱を招くことができますまた、あなたが明示的に財産上のリリースを呼び出すべきではありません、あなただけのメモリ管理は、プロパティ自体に発生させ、その

- (void)openSomethingController { 
    MyAppDelegate * app = [[UIApplication sharedApplication] delegate]; 
    SomethingController *controller=[[SomethingController alloc] init]; 
    app.currentSomethingController = controller; 
    [controller release]; 
    [self presentModalViewController:app.currentSomethingController animated:NO]; 
} 

のようにコードを書き直す必要がありますし、

- (void)dismissSelf 
{ 
    MyAppDelegate * app = [[UIApplication sharedApplication] delegate]; 
    app.currentSomethingController = nil; 
    [self dismissModalViewControllerAnimated:NO]; 
} 
+0

私はプロパティがオブジェクトを解放していないので、オブジェクトを解放しないと思ったので、混乱は外部の読者だけではありませんでした。それを行う正しい方法を指摘していただきありがとうございます! –

関連する問題