0

我有一个带有两个视图控制器的应用程序......父控制器,一个被推入堆栈的子控制器。

我已经对我的程序进行了编码,以便在调用父视图或子视图的 viewDidAppear 方法时将 networkClass 的委托设置为父或子。

因此,问题是,我的子类实现了一些在父类中不需要的委托方法,因为父类从不进行其中一些网络调用。但是,当我在子类中发起网络调用并在父类完成之前回击父类时……父类现在被设置为委托。

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

我可以知道解决方法吗?

4

1 回答 1

1

选项1:取消子中的操作viewWillDisappear

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

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

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

于 2013-06-26T02:26:11.057 回答