Объекты пользовательского класса NULL вне viewDidLoad?

u1Option — это объект Option (пользовательский класс), который объявляется и вызывается в моем ViewController viewDidLoad как:

- (void)viewDidLoad  {

    [super viewDidLoad];

    Option *u1Option = [[Option alloc]init];

    [u1Option setName: @"test"];

    NSLog(@"Test1 Result: %@", u1Option.name);
}

Option — это пользовательский класс, унаследованный от NSObject и имеющий свойство, объявленное в Option.h:

@property NSString *name;

Однако, если попытаться использовать u1Option в IBAction, ничего не передается, и хотя я получаю тестовую строку в NSLOG Test1, напротив, я получаю NULL в NSLOG Test2.

- (IBAction)addFirstOption:(UIButton *)sender {

    NSLog(@"Test2 Result: %@", u1Option.name);
}

person LukasGF    schedule 07.09.2014    source источник


Ответы (1)


Экземпляр Option уничтожается, как только возвращается viewDidLoad. Вам нужно поместить его в переменную свойства или экземпляра. Если это уже свойство или переменная экземпляра, вы переопределяете его, поэтому используйте:

u1Option = [[Option alloc] init];

И этой проблемы можно избежать в будущем, используя self.u1Option или _u1Option.

person trojanfoe    schedule 07.09.2014