0

私は他の人からプロジェクトを継承しました。問題は、コードにsetViewControllerAppDelegate 内にあるビュー間で変更するメソッドがあることです。問題は、このコードが大量のメモリ リークを起こしているように見えることです。コードを修正しようとしてきましたが、うまくいかないようです。それが最善の解決策だと思いますか?このコードを修正するか、代わりにナビゲーション コントローラーを一緒に使用しますか?

// The Code to change the views
- (void)setViewController:(UIViewController*)viewController
{
    [UIView transitionWithView:_window duration:0.5 options:UIViewAnimationOptionTransitionNone animations:^(void) 
     {
         BOOL oldState = [UIView areAnimationsEnabled];
         [UIView setAnimationsEnabled:NO];
         _window.rootViewController = viewController;
         [UIView setAnimationsEnabled:oldState];
     } 
                    completion:nil];

}

// The calls to the setViewController
-(void) gotoHowToUseView{
    [self setViewController:[[[HowToVC alloc] initWithNibName:@"HowToVC" bundle:nil] autorelease]];
}
-(void) gotoHowToCredits{
    [self setViewController:[[[CreditsVC alloc] initWithNibName:@"CreditsVC" bundle:nil] autorelease]];
}
4

1 に答える 1

0

UINavigation Controller を使ったほうがいいと思います。

コードの解決策は、両方の関数から autorelease を削除することです。この 2 行を setViewController 関数に追加します。

  _window.rootViewController = nil;  // add this line
  _window.rootViewController = viewController; 
  [viewController release]; // add this line
于 2012-08-03T15:48:55.880 に答える