2012-02-17 4 views
0

replace detailViewを使用すると、segueアプリがクラッシュする。iPadの代わりにセグを使用するとメモリの問題が発生する

私はビューコントローラの束を置き換えています(第1はナビゲーションコントローラ、次にビューコントローラ付きのタブバーコントローラです)。 tabBar ControllerはsplitViewControllerのデリゲートです。

エラーメッセージは次のとおりです。

-[TabBarController splitViewController:shouldHideViewController:inOrientation:]: 
message sent to deallocated instance 0x9b7d180 

UPD:TabBarControllerコード

// TabBarController.m 
#import "TabBarController.h" 

@implementation TabBarController 
@synthesize masterPopoverController = _masterPopoverController; 
#pragma mark - View lifecycle 

- (void)awakeFromNib // always try to be the split view's delegate 
{ 
    [super awakeFromNib]; 
    self.splitViewController.delegate = self; 
} 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.delegate = self; 
} 


- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    self.splitViewController.delegate = nil; 
    self.delegate = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
    } else { 
     return YES; 
    } 
} 

#pragma mark - Split view 

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController 
{ 
// barButtonItem.title = NSLocalizedString(@"Master", @"Master"); 
// [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 
// self.masterPopoverController = popoverController; 
} 

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem 
{ 
    // Called when the view is shown again in the split view, invalidating the button and popover controller. 
// [self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
// self.masterPopoverController = nil; 
} 
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{ 
    return NO; 
} 
@end 
+1

コードなしでメモリの問題をデバッグするのは非常に難しいですが、メッセージは、TabBarControllerが解放された後でもデリゲートとして登録され(呼び出された)ことを示すようです。 –

+0

コードが多すぎるため、何が間違っているべきか分かりませんでした。 tabBarコントローラコードでポストを更新します。 – Shmidt

答えて

0

問題は、私がdetailViewにUISplitViewControllerのデリゲートを割り当てたということでした。 detailビューを再起動するとメモリの問題が発生します。 AppDelegateを作成した後も、UISplitViewControllerの問題の代理人が解決されました。

関連する問題