【问题标题】:Transferring data in an array from view to view在视图之间传输数组中的数据
【发布时间】:2011-06-16 22:06:07
【问题描述】:

我有一个类,叫它Class1,它包含一个数组,叫它array1,作为一个属性,我保留并合成它。

我想用从其他视图获得的值将对象添加到该数组。因此,对于每个视图,我引用Class1,创建一个对象,然后将值添加到array1 并为该特定视图显示它。这行得通!

当我转到新视图时,我需要重新初始化 array1 以将新对象复制到它(或者它给我一个错误,array1 为空),但之前的值(之前的值是存储在以前的视图中)丢失。我知道“保留”是针对特定类的,并且数组不会保留整个程序过程中的值。

我该怎么做?

【问题讨论】:

  • 你可以使用NSUserDefaults来存储数组。

标签: objective-c ios cocoa-touch nsmutablearray retain


【解决方案1】:

您可以考虑创建一个singleton 类,您可以在应用程序的任何位置访问它。 Apple 文档有一个 standard approach 用于创建单例类。您可以将Class1 设为单例类。

【讨论】:

  • 哈哈。精彩的。我会试试这个然后回来......如果我做了很多单例类,在视图之间传递变量和东西会不会很容易;)?
  • 感谢 Apple 标准方法的链接。 +1
  • @Legolas 制作过多的单例意味着只要您的应用程序运行,它们就会全部留在内存中。这可能会导致内存警告并随后强制关闭您的应用程序。应该明智地使用单例。
  • 谢谢哥们。你能告诉我这与 NSUserDefaults 有何不同/更有效吗?
  • NSUserDefaults 可能不是存储数组的坏选择,但请记住它会定期读取和写入数据库,尽管它会缓存数据。我并不反对它,但我认为它是一个存储您的应用程序偏好的地方,而不是一种通信机制或存储机制。还为这两个目的提供了其他方法。如果数据操作超出了数组,即您希望父类随处可用以操作或对更改做出反应,我宁愿选择单例。但是如果有大量数据,太多的单例会占用内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多