仅存储一个会话的数据的变量

时间:2013-11-03 11:46:39

标签: ios iphone objective-c

我这里有一个基本问题。我知道我们可以使用NSUserDefaults来存储永久存在于设备中的数据。但是,我们可以使用任何其他方法/变量来存储一个会话的数据,即当用户关闭/关闭应用程序并重新打开它时,数据将完成。

我希望我可以在不同类(视图控制器)的同一会话中重新调用该数据(例如一个int)

非常感谢!!

2 个答案:

答案 0 :(得分:2)

这样做的常见方法是在你的app委托中创建一个ivar,并设置两个方法来获取它。

答案 1 :(得分:0)

显然,您正在寻找的不是持久性,而是跨多个类的数据可用性。执行此操作的常见模式是Singleton pattern。以下是一个示例实现。

@interface MySingleton : NSObject {
   NSString *someProperty;
}

@property (nonatomic, retain) NSString *someProperty;

+ (id)sharedManager;

@end


@implementation MyManager

@synthesize someProperty;

#pragma mark Singleton Methods

+ (id)sharedManager {
   static MyManager *sharedMyManager = nil;
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
      sharedMyManager = [[self alloc] init];
   });
   return sharedMyManager;
}

- (id)init {
   if (self = [super init]) {
     someProperty = [[NSString alloc] initWithString:@"Default Property Value"];
   }
   return self;
}

- (void)dealloc {
  // Should never be called, but just here for clarity really.
}