Слабые свойства & prepareForSegue: одно свойство становится нулевым, а другое - нет

Я действительно смущен тем, что происходит в prepareForSegue со слабыми / сильными свойствами. Позволь мне объяснить:

У меня есть два простых вида контроллера:

  • ViewController1
  • ViewController2

связан с одним переходом от ViewController1 к ViewController2.

Оба контроллера представления имеют два свойства:

@property (nonatomic, weak) NSArray *simpleArray;
@property (nonatomic, weak) NSString *simpleString;

Единственное, что я не могу понять, это то, что в моем prepareForSegue NSArray становится нулевым, а NSString - нет. Это код из ViewController1:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.simpleString = @"string";
    self.simpleArray = [NSArray arrayWithObjects:@"string2", @"string3", nil];

    NSLog(@"ViewDidLoad - simpleString: %@, simpleArray: %@", self.simpleString, self.simpleArray);
}


#pragma mark - segue

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"PrepareForSegue - simpleString: %@, simpleArray: %@", self.simpleString, self.simpleArray);

    if ([[segue identifier] isEqualToString:@"segue"])
    {
        ViewController2 *vc = (ViewController2 *)segue.destinationViewController;
        vc.simpleString = self.simpleString;
        vc.simpleArray = self.simpleArray;
    }
}

2015-07-07 17: 23: 12.915 тест [3675:147600] ViewDidLoad - simpleString: строка, simpleArray: (строка2, строка3)

2015-07-07 17: 23: 14.521 тест [3675:147600] PrepareForSegue - simpleString: string, simpleArray: (null)

Если я установлю свойство NSArray как сильное, оно сохранит значение.

Итак, почему два слабых свойства имеют разное поведение?

0 ответов

Другие вопросы по тегам