开发者

"EXC_BAD_ACCESS" in switching to another view

开发者 https://www.devze.com 2023-02-19 03:35 出处:网络
I have MainMe开发者_如何学CnuViewController with button which action is - (IBAction) goToFirstView {

I have MainMe开发者_如何学CnuViewController with button which action is

- (IBAction) goToFirstView {
    FirstViewController *fvc = [[FirstViewController alloc] init];
    [self.view addSubview:fvc.view];
    [fvc release];
}

FirstViewController have UIButton with action

- (IBAction) rightArrow {
    SecondViewController *svc = [[SecondViewController alloc] init];
    [self.view addSubview:svc.view];
    [svc release];
}

But when I press "rightArrow" button app crashes with "EXC_BAD_ACCESS". Can't found my problem. Help me please.


[svc release];

The problem is here. When releasing the view controller, the view's events will target a freed object, and make your program crash (probably in viewDidLoad or viewDidAppear if it's instant but it doesn't matter). Note that a view does not (normally, AFAIK) retain it's view controller, if that might have been your assumption...


When you say [self.view addSubview:svc.view] you're adding SecondViewController's view to FirstViewController's view. Similar with MainViewController and FirstViewController. What you'll end up with is a view hierarchy that looks like this:

  • main view
    • first view
      • second view

I doubt that's really what you want. Instead, use a navigation controller with your MainViewController as the nav controller's root controller, and then use -pushViewController:animated: to push the controllers (not the views!) onto the navigation stack.

0

精彩评论

暂无评论...
验证码 换一张
取 消