2

可以将两个对象作为彼此的委托..吗?我的场景是我有一个以两种模式显示的视图..第一个:创建模式,第二个:编辑模式

在创建模式下,所有字段都是空的,我从用户填写的视图中获取数据,然后更新我的数据模型。

在视图模式下,我从我的数据模型中填充视图。

这是使用溢出的视图控制器完成的(因此我被迫使用委托)。我希望我能更好地解释这一点,但这是我能做的最好的。截至目前,我正在使用委托从 A 到 B 和从 B 到 A 的通知进行通信。

如果我以两种方式都使用委托,这会正常工作吗……或者是否有任何我无法预见的复杂性?

4

1 回答 1

6

可能会出现一些问题,但如果您采取必要的预防措施,那就没问题了:

  1. 确保两个代表都是弱引用的。这意味着@property (weak)在 ARC 或@property (assign). 这将防止发生保留循环。

  2. 确保您不会遇到委托方法调用另一个控制器的委托方法的情况,该方法在第一个控制器中调用相同的委托方法,依此类推。如果您不小心,您很容易陷入无限循环。

关于在这种情况下这是否是最佳设计模式的讨论或辩论并不是真正属于 SO 的事情。但是如果你小心的话,这样做是可能的,这就是你问题的答案。

于 2012-07-15T14:40:37.717 回答