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, нищо не се предава и докато получавам тестовия низ в Test1 NSLOG, напротив, получавам NULL в Test2 NSLOG.

- (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