两个对象可以成为彼此的代表......?

时间:2012-07-15 14:29:50

标签: objective-c ios design-patterns

将两个对象作为彼此的参数可以吗?我的情况是我有一个以两种模式显示的视图。第一种:创建模式,第二种:编辑模式

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

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

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

如果我在两个方面都使用授权,这项工作是否正常......或者是否涉及到任何我无法预见的复杂性?

1 个答案:

答案 0 :(得分:6)

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

  1. 确保两个代表都被弱引用。这意味着在ARC或@property (weak)上使用@property (assign)。这样可以防止发生保留周期。

  2. 确保您没有遇到委托方法调用另一个控制器的委托方法的情况,该方法在第一个控制器中调用相同的委托方法,依此类推。如果你不小心,你可以轻松获得无限循环。

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