以编程方式执行Segue时的iOS视图控制器生命周期

时间:2016-08-31 11:16:49

标签: ios objective-c uiviewcontroller segue

基本上,我想从当前VC的当前导航控制器推送一个新的VC。在推送到新VC时,我想将值设置为新VC。例如:

旧VC推送部分:

GFRepositoryViewController *reposVC = [[GFRepositoryViewController alloc]init];
            reposVC.userName = self.userNameTextField.text;
            [self.navigationController pushViewController:reposVC animated:YES];

新VC .h文件:

@property (strong, nonatomic) NSString *userName;

基本上,在新VC中获取“userName”的值时没有问题。但是,我对VC的生命周期有疑问。

因为新VC“GFRepositoryViewController”是在旧VC中分配的,所以应该有一个强指针从旧VC指向新VC。一旦推送到新的VC,旧的VC应该被解除分配。因此,新的VC也应该被释放,因为它有一个强大的指针。因此,值“userName”也应该被释放。但是,我可以成功获得新VC中的值。这就是我对此感到好奇的原因。

1 个答案:

答案 0 :(得分:1)

这些控制器都没有被释放,因为它们都嵌入在UINavigationController对象中。使用UINavigationController方法时

  • initWithRootViewController
  • pushViewController:animated

新控制器被添加到navigationController的viewControllers属性,该属性是NSArray对象。它只有很强的参考价值。