我正在开发一个 ios 应用程序,其中在第一个视图控制器中要求用户提供其名称性别年龄和母语。然后我将在整个应用程序中使用这些对象。那么存储对象以便所有类都可以轻松访问它们的最佳方法是什么?
6 回答
使用NSUserDefaults
. 使用起来非常简单,可以从应用程序的任何地方访问。
您应该使用它来存储用户首选项。它可以存储简单的数据类型以及复杂的对象甚至数组、字典。存储任何密钥都非常简单,
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:firstName forKey:@"firstName"];
读回来,
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@"firstName"];
注意:用户默认值存储在 plist 文件中,并在每次应用程序启动时加载。所以请注意不要在其中写入太多信息。否则应用程序加载时间会增加,如果超过看门狗定时器间隔,应用程序将接收SIGKILL
并崩溃。
但是在您的情况下,为了存储用户设置,您可以继续使用它。
希望有帮助!
创建单例类说 MySingletonClass 并定义你的变量。您可以通过单例对象从任何类访问您的变量。
// 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 中的变量定义
MySingletonClass* sharedInstance = [MySingletonClass sharedInstance]; // get object of MySingletonClass
sharedInstance.yourVariable; // now you can access variable defined in MySingletonClass by this object.
您也可以在 AppDelegate 中定义全局变量(不推荐)。
您可以Singleton
为此使用 a 。这样的类只能有一个对象,您可以从应用程序中的任何位置访问它。看看这个问题:Singleton
您只需要更改isMultiplayer
属性以满足您的需求。
创建一个代表:
…说出性别年龄和母语
当你从用户那里得到信息时,创建一个类的实例(例如不可变实例),并将它从视图控制器传递给依赖它的其他实现。在某些情况下,您需要创建 ivars 或属性来保留此实例。
不需要全局。
您可以让 extern appDelegate 类中的任何变量在项目中的任何位置使用它。
外部 NSString *passString;
是的,我希望使用 NSUserDefaults 是上面提到的应用程序的最佳和恰当的方式。它非常简单,很容易从应用程序中的任何视图控制器访问数据,没有任何更高的难度。