基本上,我想从当前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中的值。这就是我对此感到好奇的原因。
答案 0 :(得分:1)
这些控制器都没有被释放,因为它们都嵌入在UINavigationController
对象中。使用UINavigationController
方法时
initWithRootViewController
pushViewController:animated
新控制器被添加到navigationController的viewControllers
属性,该属性是NSArray
对象。它只有很强的参考价值。