【发布时间】:2012-08-27 04:41:38
【问题描述】:
我正在寻找在我的所有类中全局存储和读取变量的最佳方式。我知道我可以使用“单例”,但是我不确定这是否是存储变量的最佳方法或如何准确地执行此操作?
【问题讨论】:
标签: iphone variables save global-variables global
我正在寻找在我的所有类中全局存储和读取变量的最佳方式。我知道我可以使用“单例”,但是我不确定这是否是存储变量的最佳方法或如何准确地执行此操作?
【问题讨论】:
标签: iphone variables save global-variables global
我使用单例,我是这样做的:
创建一个新类,为了演示,我们将其命名为MyDataModel。在 MyDataModel.h 中执行以下操作:
#import <Foundation/Foundation.h>
@interface MyDataModel : NSObject
{
NSString *myStringVariable;
NSUInteger myIntVariable;
//add any variables you need
}
@property (nonatomic, retain) NSString *myStringVariable;
@property (nonatomic) NSUInteger myIntVariable;
+ (MyDataModel *) sharedInstance;
@end
现在在 MyDataModel.m 中执行:
#import "MyDataModel.h"
@implementation MyDataModel
@synthesize myStringVariable, myIntVariable;
static MyDataModel *_sharedInstance;
+ (MyDataModel *) sharedInstance
{
if(!_sharedInstance)
{
_sharedInstance = [[MyDataModel alloc] init];
}
return _sharedInstance;
}
@end
现在在任何类中你想使用这个单例你必须#import这个类,这里是如何使用变量:
[MyDataModel sharedInstance].myStringVariable = @"anyThing";
[MyDataModel sharedInstance].myIntVariable = 123;
我希望这可以为您澄清一些事情。
【讨论】:
[array writeToFile:filePath atomically:YES];。还有其他选项,例如 SQLite3 数据库,但是当您有大量数据要存储时,请确保使用它......所以数据的类型和数量决定了。
anotherString = [MyDataModel sharedInstance].myStringVariable; 或 anotherInteger = [MyDataModel sharedInstance].myIntVariable;。我希望我正确理解了你的评论。如果它解决了您的问题,请考虑将此答案设置为正确,以便其他读者知道此答案是您问题的解决方案。
您可以使用 NSUserDefaults、AppDelegate 中的变量(不建议)或单例。 我总是在我的应用程序中创建一个单例来存储各种变量和方法。
【讨论】: