这对我来说是一个严重的问题。在具有多层子视图控制器的代码库上工作大约4-5层 - 这是一个平板电脑应用程序,在视图控制器之间具有非常高的解耦程度。第5层子视图控制器想要向顶级视图控制器发送消息以显示模态。第4层和第3层也有不同的消息,所以基本上现在我有4个协议,从嵌入到祖先viewcontroller深处的子视图控制器发送消息变得非常复杂。有更简单的方法吗?
我们考虑过使用NSNotification但不是特别喜欢它,因为它很难调试它,订阅不是我们控制范围内的明确依赖。我们还考虑过使用单例,但是静态和单例是邪恶的(对吧?)并导致状态和并发问题。
感谢任何帮助。此外,我意识到我意识到这是一个稍微开放的基于设计的问题,但它有一个非常具体的用例(如上所述)。
答案 0 :(得分:0)
这是一个有趣的问题,但我想我们需要一些提示,例如一个方案。
第一个想法是为什么你需要添加嵌套的孩子?难道你不能使用简单的堆栈和单个Container VC来管理?您管理风险投资的方式似乎不正确。如果需要通知他们模型中的更改,则应该只能看到它们,在viewWill / Did /出现的其他人中,您可以再次询问新数据。如果您需要告知每个VC他们的状态,我认为您应该修改您的层次结构。
我想象一个带有堆栈或一组VC和VC可见VC的Container VC。此Container将管理信息交换。正如rdelmar所说,它似乎是一个非常高度的耦合。您应该重新考虑只在容器和可见VC之间进行通信的方式,其他人可以在它们出现时刷新数据。