代码拉取完成,页面将自动刷新
同步操作将从 沼泽神秘人/diceGame 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#import "SecureData.h"
#define kServiceName @"UnitySecureData"
@implementation SecureData
@synthesize dict = dict_;
#pragma mark - Object Lifecycle
- (id)init {
if ((self = [super init])) {
[self retrieve];
}
return self;
}
- (void)dealloc {
self.dict = nil;
[super dealloc];
}
#pragma mark - Transaction Method
- (void)store {
NSMutableDictionary *secItem = [[[NSMutableDictionary alloc] init] autorelease];
[secItem setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[secItem setObject:kServiceName forKey:(id)kSecAttrService];
SecItemDelete((CFDictionaryRef)secItem);
[secItem setObject:[NSKeyedArchiver archivedDataWithRootObject:self.dict] forKey:(id)kSecValueData];
SecItemAdd((CFDictionaryRef)secItem, NULL);
}
- (void)retrieve {
self.dict = nil;
NSMutableDictionary *secItem = [[NSMutableDictionary alloc] init];
[secItem setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[secItem setObject:kServiceName forKey:(id)kSecAttrService];
[secItem setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
[secItem setObject:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit];
NSData *data = nil;
if (SecItemCopyMatching((CFDictionaryRef)secItem, (CFTypeRef *)&data) == errSecSuccess) {
self.dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
[data release];
if (!self.dict) self.dict = [NSMutableDictionary dictionary];
}
#pragma mark - Class Function
static SecureData *s_instance;
+ (SecureData *)sharedInstance {
if (s_instance == nil) {
s_instance = [[SecureData alloc] init];
}
return s_instance;
}
@end
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。