【发布时间】:2013-11-03 21:00:58
【问题描述】:
我在这里有一个基本问题。我知道我们可以使用 NSUserDefaults 在设备中永久存储数据。但是有没有其他方法/变量可以用来存储一个会话的数据,即当用户关闭/关闭应用程序并重新打开它时,数据将完全消失。
我希望我能在不同类(视图控制器)的同一会话中回想起该数据(例如 int)
非常感谢!!
【问题讨论】:
标签: ios iphone objective-c
我在这里有一个基本问题。我知道我们可以使用 NSUserDefaults 在设备中永久存储数据。但是有没有其他方法/变量可以用来存储一个会话的数据,即当用户关闭/关闭应用程序并重新打开它时,数据将完全消失。
我希望我能在不同类(视图控制器)的同一会话中回想起该数据(例如 int)
非常感谢!!
【问题讨论】:
标签: ios iphone objective-c
执行此操作的常见方法是在您的应用委托中创建一个 ivar,以及设置和获取它的两种方法。
【讨论】:
显然,您要寻找的不是持久性,而是跨多个类的数据可用性。执行此操作的常见模式是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.
}
【讨论】: