Thursday, February 16, 2012

ViewController gets deallocated which leads to crash


I have a view in my storyboard which I assigned an identifier called "MainView". However if I add its view to the subview, everything that follows produces a crash (e.g. pressing a button)




MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainView"];
[self.view addSubview:mvc.view];



This is the action triggered by the button : (MainViewController.h)




-(IBAction)showUsername:(id)sender{

[testLabel setText:@"username"];

}



and the crash log :




-[MainViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x44e0810



I use ARC.

1 comment:

  1. Best way to deal with this is using a property. Here's how:

    In your .h file:

    #import "MainViewController.h"

    @interface MyClass : UIViewController

    @property (strong, nonatomic) MainViewController *mvc;

    @end


    In your .m file:

    #import "MyClass.h"

    @implementation MyClass

    @synthesize mvc;

    // Your code here
    - (void)yourMethodHere {
    self.mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainView"];
    [self.view addSubview:mvc.view];
    }

    ReplyDelete