2012-02-29 29 views
0

1つのルートコントローラと2つのビューコントローラ(青と黄色)でシンプルなマルチビューアプリケーションを作成しています。 iPhone Simulatorで実行しようとすると、@synthesizeプロパティでエラーが発生します。私はその行のエラーをコメントアウトしました。スレッド1:EXC_BAD_ACCESS(コード= 2、アドレス= 0xbf7ffffc)

エラーの意味を教えてください。アプリを実行するにはどうすればよいですか?

ありがとうございます。

#import "SwitchViewController.h" 
#import "BlueViewController.h" 
#import "YellowViewController.h" 

@interface SwitchViewController() 

@end 

@implementation SwitchViewController 
@synthesize yellowViewController; 
@synthesize blueViewController; //Thread 1:EXC_BAD_ACCESS(code=2, address=0xbf7ffffc) 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)loadView 
{ 
    // If you create your views manually, you MUST override this method and use it to create your views. 
    // If you use Interface Builder to create your views, then you must NOT override this method. 
} 

- (void)viewDidLoad 

{ 
    self.blueViewController = [[BlueViewController alloc]initWithNibName:@"BlueView" bundle:nil]; 
    [self.view insertSubview:self.blueViewController.view atIndex:0]; 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (IBAction)switchViews:(id)sender 
{ 
    if(self.yellowViewController.view.superview==nil) { 
     if(self.yellowViewController==nil) { 
      self.yellowViewController = 
      [[YellowViewController alloc] initWithNibName:@"YellowView" bundle:nil]; 
     } 
     [blueViewController.view removeFromSuperview]; 
     [self.view insertSubview:self.yellowViewController.view atIndex:0]; 
    } else { 
     if (self.blueViewController == nil) { 
      self.blueViewController = 
      [[BlueViewController alloc] initWithNibName:@"BlueView" bundle:nil]; 
     } 
    } 

} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc. that aren't in use 
    if (self.blueViewController.view.superview == nil) { 
     self.blueViewController = nil; 
    } else { 
     self.yellowViewController = nil; 
    } 
} 

@end 

答えて

1

あなたSwitchViewControllerloadView方法コメントアウト、BlueViewController、およびYellowViewController。空のアプリケーションテンプレートは、最近のバージョンのXCodeでこれらのコメントを解除するために変更されましたが、あなたがフォローしているiOS開発の最初の書籍では、スタブされたメソッドを前にコメントした古いバージョンが使用されていました。

関連する問題