在IOS应用程序中存储全局对象?

时间:2013-08-27 06:42:25

标签: ios

我正在开发一个ios应用程序,在第一个视图控制器中,要求用户提供其性别年龄和母语的名称。然后我将在整个应用程序中使用这些对象。那么存储对象的最佳方法是什么,以便从所有类中轻松访问它们?

6 个答案:

答案 0 :(得分:3)

使用NSUserDefaults。使用起来非常简单,可以从应用程序的任何地方访问。

您应该使用它来存储用户首选项。它可以存储简单的数据类型以及复杂的对象甚至数组,字典。存储任何密钥都很简单,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:firstName forKey:@"firstName"];

读回来,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@"firstName"];

注意:用户默认值存储在plist文件中,每次应用程序启动时都会加载。所以要小心不要写太多信息。否则,应用程序加载时间会增加,如果超出监视程序计时器间隔,应用程序将收到SIGKILL并崩溃。

但在您的情况下,为了存储用户设置,您可以继续使用它。

希望有所帮助!

答案 1 :(得分:3)

创建单例类说MySingletonClass并定义您的变量。 你可以通过singleton对象从任何类访问你的变量。

// MySingleton.h
@interface MySingletonClass : NSObject

{
    //your global variable here
}

// set property for your variable

+ (MySingletonClass*)sharedInstance; // method for getting object of this singleton class

// In MySingleton.m
//synthesize property for your global variable


+ (MySingletonClass*)sharedInstance
{ 

  if ( !sharedInstance)
  {
      sharedInstance = [[UIController alloc] init];

   }
 return sharedInstance;
}

现在在其他课程中,您可以访问此变量。 按照此代码访问MySingletonClass中的变量define

MySingletonClass* sharedInstance = [MySingletonClass sharedInstance]; // get object of MySingletonClass
sharedInstance.yourVariable; // now you can access variable defined in MySingletonClass by this object.

您还可以在AppDelegate中定义全局变量(不推荐)。

答案 2 :(得分:2)

您可以使用Singleton。这样的类只能有一个对象,您可以从应用程序的任何位置访问它。 看看这个问题:Singleton

您只需更改isMultiplayer属性即可满足您的需求。

答案 3 :(得分:1)

创建一个代表:

的类
  

...命名性别年龄和母语

当您从用户获取信息时,创建该类的实例(例如,不可变实例),并将其从视图控制器传递到依赖于它的其他实现。在某些情况下,您需要创建ivars或属性来保留此实例。

不需要全局。

答案 4 :(得分:0)

你可以在appDelegate类中使extern任何变量在项目的任何地方使用它。

extern NSString * passString;

答案 5 :(得分:0)

是的,我希望使用NSUserDefaults是上面提到的应用程序的最佳和最简单的方式。它非常简单,易于从应用程序中的任何视图控制器访问数据,没有任何更高的难度。