可以让两个对象作为彼此的代理吗?我的场景是我有一个以两种模式显示的 View 。第一种:创建模式,第二种:编辑模式
在创建模式中,所有字段都是空的,我从用户填写的 View 中获取数据,然后更新我的数据模型。
在 View 模式下,我从我的数据模型中填充 View 。
这是使用溢出 View Controller 完成的(因此我被迫使用委托(delegate))。我希望我能更好地解释这一点,但这是我能做的最好的。截至目前,我正在使用委托(delegate)从 A 到 B 进行通信,并使用通知从 B 到 A。
如果我以两种方式使用委派,这是否可以正常工作……或者是否涉及任何我无法预见的复杂性?
最佳答案
可能会出现一些问题,但如果您采取必要的预防措施,一切都会好起来的:
确保两个委托(delegate)都是弱引用。这意味着在 ARC 上使用
@property (weak)
或@property (assign)
。这将防止发生保留循环。确保您不会遇到这样一种情况:委托(delegate)方法调用另一个 Controller 的委托(delegate)方法,后者又调用第一个 Controller 中的相同委托(delegate)方法,依此类推。如果不小心,很容易陷入无限循环。
关于在这种情况下这是否是最佳设计模式的讨论或辩论实际上不属于 SO。但是,如果您小心的话,这样做是可能的,这就是您问题的答案。
关于objective-c - 两个对象可以是彼此的代表吗......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11492716/