如何在多个视图控制器之间全局共享数据
Posted
技术标签:
【中文标题】如何在多个视图控制器之间全局共享数据【英文标题】:How to share data globally among multiple view controllers 【发布时间】:2010-10-21 16:05:19 【问题描述】:谁能帮帮我...
我在模型中有一个巨大的对象。我把它作为一个单吨类并返回对象wn其他调用。但是对象非常大,那是应用程序正在崩溃。没有返回如何全局共享数据以及何时分配对象以及在何处释放对象。我不需要视图控制器中对象中的所有数据..我需要从该对象到视图控制器的特定数据...
谢谢。
【问题讨论】:
你说的是什么数据? 确保单例实际上是单例,否则您将拥有相同模型的多个实例。尽管如此,如果应用程序由于模型的内存占用而被终止,您只能通过减小模型的大小和/或在内存中加载必要的位来避免问题。如果它是一个巨大的图像,将其拆分为多个图块。如果您要实例化和堆叠大量视图控制器,请确保实施适当的内存管理(即在 viewDidUnload 中释放保留的视图):它可能无法解决问题,但可以缓解它。 这就是我的意思。如果模型太大,您需要一种不同的方法,例如平铺或数据库或... @Joseph:数据是一个包含对象的数组。每个对象是一个包含音频文件、图像、网络视图的课程 对我来说这听起来你应该重新考虑你的策略。让 Singleton 提供这样的复杂对象没有任何意义。 【参考方案1】:您可以将指向它的指针存储在您的应用委托中并使用检索它
BlahAppDelegate* delegate = [[UIApplication sharedApplication] delegate];
id bigObject = delegate.bigObject;
由于应用代理的寿命比视图控制器长,您不必担心它的保留和释放。
单例类应该类似地工作,只要单例实例方法(检索一个创建的实例)在实例返回之前调用保留实例。当视图被解除分配时,请确保在实例上调用 release。
【讨论】:
以上是关于如何在多个视图控制器之间全局共享数据的主要内容,如果未能解决你的问题,请参考以下文章