在iOS中,使用指针在视图之间传递数据是否正常?
我的问题更多的是“这样行吗”而不是“怎么做”。 我有一个基于navigationViewController的简单应用程序。我有一个viewControllerA,它将另一个viewControllerB推入堆栈。我所做的是-在viewControllerB中,我有一个类型为viewControllerA的指针,所以当我将其推入堆栈时,我会这样说:在iOS中,使用指针在视图之间传递数据是否正常?,ios,parameter-passing,Ios,Parameter Passing,我的问题更多的是“这样行吗”而不是“怎么做”。 我有一个基于navigationViewController的简单应用程序。我有一个viewControllerA,它将另一个viewControllerB推入堆栈。我所做的是-在viewControllerB中,我有一个类型为viewControllerA的指针,所以当我将其推入堆栈时,我会这样说: -(void)buttonPressed{ ViewControllerB * nextView = [ViewControllerB allo
-(void)buttonPressed{
ViewControllerB * nextView = [ViewControllerB alloc] init];
nextView.lastView = self;
[self.navigationViewController pushViewController:nextView animated:YES];
}
然后,在新的ViewController中,我给第一个ViewController中的字段赋值:
lastView.dataString = @"ABC";
因此,当viewControllerA关闭时,我更改了viewControllerA中字段的值
我的问题是:可以吗?如果不是,你能告诉我为什么这不是个好主意吗?
我正在使用NSString值
谢谢大家:)确保ViewControllerB没有保留它的
lastview
属性,否则这将是一个保留周期,两个视图控制器将永远不会被释放。将信息从子视图控制器传递到父视图控制器的正确方法是使用协议。有许多类似的问题,例如,请参见技术上的这是可以的,它会起作用。如上所述,请确保只保留对上一个视图控制器的弱引用,否则将导致保留循环
然而,就可重用性和特性隔离而言,这并不是真正干净的
您还可以使用其他三种方法:
- 授权
- 关键值观察
- 国家统计局通知
lastView
,而不是delegate
,并声明它是控制器的指针,而不是使用协议。他们在检查你的应用程序的操作,而不是代码。我明白了。非常感谢你!