只是我一直在思考的一个问题,“传统上”对于模态视图控制器,呈现的“父”视图控制器应该解雇呈现的孩子。
Apple 已经声明呈现的孩子不应该自我解雇,因此我倾向于建立一个委托协议只是为了解雇一个模态视图控制器。
这似乎有些矫枉过正,
我想知道,因为目标 C 无论如何都是通过引用传递的,并且不会有性能成本,我不能在实例化期间将呈现父视图控制器的引用传递给模态呈现的子视图控制器,然后再调用一个方法父母解雇孩子?
对不起,如果这是一个愚蠢的问题......
只是我一直在思考的一个问题,“传统上”对于模态视图控制器,呈现的“父”视图控制器应该解雇呈现的孩子。
Apple 已经声明呈现的孩子不应该自我解雇,因此我倾向于建立一个委托协议只是为了解雇一个模态视图控制器。
这似乎有些矫枉过正,
我想知道,因为目标 C 无论如何都是通过引用传递的,并且不会有性能成本,我不能在实例化期间将呈现父视图控制器的引用传递给模态呈现的子视图控制器,然后再调用一个方法父母解雇孩子?
对不起,如果这是一个愚蠢的问题......
您通常为此类设置委托/协议的原因是它使您的代码耦合度大大降低。假设您想稍后将您的视图呈现为弹出框或子视图?您可能认为这不是必需的,但随着项目的发展,它可能会发生。
由于父控制器处理自己的模式、子视图和弹出框,它知道当按下退出按钮(或其他操作)时该做什么。模态(在这种情况下)不一定(也不应该!)知道它是如何呈现的,因此它应该告诉它的委托并让那个控制器处理它(popViewController
, dismissViewController
, removeSubview
, 等等...)。这是理解 OOP 的重要组成部分,有助于保持代码更简洁。
不,在我看来,这不是一个愚蠢的问题。