the_critic
the_critic

Reputation: 12820

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.

Upvotes: 4

Views: 2742

Answers (1)

Simon Germain
Simon Germain

Reputation: 6844

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];
}

Upvotes: 6

Related Questions