2009-11-19 70 views
1

一直在研究如何将数据从一个子视图发送到另一个子视图。该应用程序有几个视图,其中一个是实时设置视图。设置中的更改应该影响其他视图内的内容。在两个iPhone子视图之间交换数据

NSUserDefaults似乎很受欢迎,但我不希望持久性数据或自动保存到数据库/文件。看起来像潜在的放缓,我想避免。

第二流行的事情是将一些常见顶级对象的引用传递给每个子视图。只是还没有找到任何教程,这将详细告诉我如何做到这一点...最有可能这么简单,没有教程是需要的 - 在你想出来一次!如果你能指点我正确的方向(URL),请多多谅解!

问题:我正在考虑使用一个“单一对象”来存储“全局数据”,随时随地访问它。这有什么问题?如果我在例如appDelegate.m应该在任何人试图访问它之前存在,对吧?

我正在查看this的示例代码。

回答

1

我会推荐使用代表和/或通知。

不是在应用程序委托中创建新的单例,而是在应用程序委托中添加必要的数据(或更好地引用数据),并让视图具有对应用程序委托的引用。

您还可以设置notifications,以便您的视图可以跟踪它们显示的数据更改。

+0

通知更改数据看起来很有用,thanx!将在某些时候使用这些,从其他环境中熟悉。 代表另一方面...似乎是iPhone中的推荐模式,但还没有找到任何好的教程(带有示例代码)。我仍然需要在自己的类中打包数据和/或添加到appDelegate中。 Singleton对象似乎提供了相同的结果,代码少,错误发生的可能性也小。 – JOM 2009-11-19 12:51:27

+0

我真的没有看到代码方面的巨大差异或错误的可能性。我认为几乎所有的教程或示例代码都使用委托(只需查看应用程序委托和/或视图控制器的@interface声明后面的协议列表)。 – gerry3 2009-11-19 16:22:31

0

单身人士的美妙之处在于,它是在您首次通过[singletonClass sharedInstance]访问它时自动创建的。所以你不需要在启动时“创建”它。如果它是需要从任何视图访问的全局数据,单身人士可能是这样做的正确方法。

+0

你或其他人知道另一种方式来做到这一点吗?我的意思是,这个单身人士是非常棒的,但是这是解决这种情况的唯一方法吗? – 2009-11-19 11:26:19

+0

这是什么rad?如果你需要在应用程序的持续时间内将单例存储在内存中一次?你可以在应用程序关闭时释放它。 – FelixLam 2009-11-19 11:33:42