使用委托还是单例在视图控制器间传递数据更好-Objective-C

3

我一直在尝试不同的方法来在视图控制器之间传递数据,目前为止我已经尝试了委托和单例。在尝试这两种模式之后,我开始想知道是否有一种比另一种更好,或者仅仅是个人口味不同。在我看来,单例模式似乎非常直接简单,而且它似乎符合MVC模式,因为它完全将模型与控制器分离。

1- 这两种模式中哪一种更好?
2- 你使用哪种方法?
3- 你为什么喜欢其中一种方法?

如果我的问题不太清晰,我很抱歉,但我想听听专家的意见并尝试使用更有意义的方法。

谢谢。


7
通常情况下,单例应该是最后的选择。 - Hot Licks
1
创建一个数据模型,可以被类使用。 - zaph
1
使用NSNotificationCenter而不是单例模式。 - Neil Galiaskarov
1
块。我更喜欢使用块在控制器之间传递数据。 - Leena
@Zaph - 创建一个数据模型,可以被类使用。您知道任何可以阅读更多关于这种方法的文档/教程吗? - fs_tigre
1个回答

1

根据苹果的示例应用程序,代理是更可取的方式。它们使用更少的内存,并能够使对象之间的连接松散耦合。假设您有视图控制器(A和B)和单例对象S(可能在AppDelegate.h中初始化)。例如,B需要下载一些数据(D)并返回到A。在单例情况下,即使在A中不需要它,它也会存储D。


1
我曾两次建议使用这种方法在视图控制器之间传递数据,但却遭到了很多负评!你很幸运还没有被踩呢!我喜欢这种在视图控制器之间传递数据的方式,但由于被踩了,我不得不采用其他方法。 - Pavan
2
你能解释一下“它们使用更少的内存”吗?或者可以进一步阐述一下松耦合是什么意思吗? - jscs
1
我在prepareForSegue中传递数据,或者它已经存储在核心数据或用户默认设置中。有时候使用nsnotifcation传递数据。有时我会使用单例,但尽可能避免使用单例,因为单例习惯于随着时间的推移不断增长。 - Augie
为什么那是个坏主意?如果可以告诉我的话。 - GenieWanted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接