2013-06-26 47 views
0

我有一个应用程序与两个视图控制器..父控制器,和一个被推入堆栈的孩子。iOS委托问题与多个视图控制器

我已经编写了我的程序,以便每当调用父视图或子视图的viewDidAppear方法时,networkClass的委托设置为父OR子。

因此,问题是,我的子类有一些委托方法实现,父类中不需要,因为父类永远不会进行这些网络调用。但是,当我在子类中发起网络调用时,在完成父类的返回前,父类现在被设置为委托。

但是由于父类没有实现委托方法,所以它崩溃了。

我可以知道解决方法吗?

回答

1

选项1:取消儿童操作viewWillDisappear

选项2:在networkClass中,检查该方法在调用之前是否已实施。

选项3 :(代码异味):在父代中实现一个存根。

在任何情况下,您都应该取消操作(Op.1)。如果您在协议定义中将函数标记为optional,您应该检查其是否存在(Op.2);如果没有,你应该收到编译器警告关于一个不完整的实现。不要忽略任何编译器错误,特别是关于未实现的方法!如果完全实施它们是没有意义的,你应该认真考虑它们是否应该是可选的(2)。当然,您可以实施存根(-(void)callback1{}),但这很少是正确的行为。

相关问题