在iOS中,使用指针在视图之间传递数据是否正常?

在iOS中,使用指针在视图之间传递数据是否正常?,ios,parameter-passing,Ios,Parameter Passing,我的问题更多的是“这样行吗”而不是“怎么做”。 我有一个基于navigationViewController的简单应用程序。我有一个viewControllerA,它将另一个viewControllerB推入堆栈。我所做的是-在viewControllerB中,我有一个类型为viewControllerA的指针,所以当我将其推入堆栈时,我会这样说: -(void)buttonPressed{ ViewControllerB * nextView = [ViewControllerB allo

我的问题更多的是“这样行吗”而不是“怎么做”。 我有一个基于navigationViewController的简单应用程序。我有一个viewControllerA,它将另一个viewControllerB推入堆栈。我所做的是-在viewControllerB中,我有一个类型为viewControllerA的指针,所以当我将其推入堆栈时,我会这样说:

-(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
属性,否则这将是一个保留周期,两个视图控制器将永远不会被释放。将信息从子视图控制器传递到父视图控制器的正确方法是使用协议。有许多类似的问题,例如,请参见技术上的这是可以的,它会起作用。如上所述,请确保只保留对上一个视图控制器的弱引用,否则将导致保留循环

然而,就可重用性和特性隔离而言,这并不是真正干净的

您还可以使用其他三种方法:

  • 授权
  • 关键值观察
  • 国家统计局通知

谢谢,这是apple boys将我的应用程序从商店关闭的一个可行理由吗?@AlexBrest除非你有上述的保留周期(又称强引用周期),这可能导致泄漏并最终崩溃。为了安全起见,请将此设置为弱指针。但是苹果没有审查你的代码,所以他们不知道你决定将这个指针调回显示视图
lastView
,而不是
delegate
,并声明它是控制器的指针,而不是使用协议。他们在检查你的应用程序的操作,而不是代码。我明白了。非常感谢你!