Objective c 将数据传递到rootViewController的最优雅方式
我必须在navigationController中将数据从第三个viewController传递到rootViewController 我想这样做: A=rootViewController和B=lastViewController 在B中,我插入如下方法:Objective c 将数据传递到rootViewController的最优雅方式,objective-c,uinavigationcontroller,Objective C,Uinavigationcontroller,我必须在navigationController中将数据从第三个viewController传递到rootViewController 我想这样做: A=rootViewController和B=lastViewController 在B中,我插入如下方法: -(void)load:(A father)f { self.father = f; // where father is a retain property } 然后,当我在A中分配B时,在推它之前,我将调用load方法 行吗
-(void)load:(A father)f
{
self.father = f; // where father is a retain property
}
然后,当我在A中分配B时,在推它之前,我将调用load方法
行吗
还有别的办法吗?(还有全局变量和单例,我不想要这两个,因为我的内存中有很多数据)
谢谢你的帮助。有些人说单身是邪恶的,但我认为他们是有目的的——但对你来说,我会同意你的观点。这是在控制器和模型之间处理数据的最佳方法
- 您的rootViewController B必须实现一个协议,然后在lastViewController中您必须声明该协议的委托,然后调用类似lastViewController.myDelegate=myParent的东西
- 如果您想模块化组件,这很有用,但是根据经验,有些类的功能非常具体,创建协议只是延长了传输数据这一基本需求的过程。在这种情况下,我建议您使用#2
- …但我更喜欢在初始化时传递父类。例如,initWithParent:[myParent],但那只是我。也不要从子类中保留父类。只允许父类保留其子类,否则将出现内存管理问题。这种方法的缺点是,如果控制器变得复杂,以后很难分离它们的逻辑,以防需要分离它们,就像在另一个项目中重复使用一个组件一样
请注意:不要将父类保留在其子类中,如果它们都持有彼此的副本,它们将永远不会被释放。我的首选是创建一个指定的初始值设定项,并将ParentViewController作为参数(
-(id)initWithParentViewController:(id)viewController;
)。事实上,正如苹果在文档中所写,通常孩子不应该保留自己的父母。