CFUUID - 创造ONCE&使用app的整个生命周期

时间:2012-03-29 12:10:03

标签: ios objective-c xcode

我在代码中写了这些行:

CFUUIDRef identifier = CFUUIDCreate(NULL);
NSString *identifierString = (NSString*)CFUUIDCreateString(NULL, identifier);
NSLog(@"%@",identifierString);
[self setValue:identifierString forKey:kParamNameDeviceId];

但每次应用启动时都会调用这些行。

现在我的问题是,如何实现以下目标?

  • 创建CFUUID。
  • 将其存储在某个变量中,以便下次启动应用时,不应创建新的CFUUID。它应该查找以前创建的CFUUID并将其返回。

简而言之,我希望在应用程序的整个生命周期中创建一个CFUUID并使用它(直到它被卸载)。

3 个答案:

答案 0 :(得分:8)

最简单的方法是将其存储在NSUserDefaults

NSString *identifierString = [[NSUserDefaults standardUserDefaults] objectForKey:@"myID"];
if (!identifierString) {
    CFUUIDRef identifier = CFUUIDCreate(NULL);
    identifierString = (NSString*)CFUUIDCreateString(NULL, identifier);
    [[NSUserDefaults standardUserDefaults] setObject:identifierString forKey:@"myID"];
}
NSLog(@"%@",identifierString);
/* ... */

答案 1 :(得分:6)

创建一次。在NSUSerDefaults中添加它并检查在创建UUID之前是否已存储UUID。简单的伪代码,

    NSString *CFUUID = nil;

if (![[NSUserDefaults standardUserDefaults] objectForKey:@"UUID"]) {
    //create CFUUDID.

    [[NSUserDefaults standardUserDefaults] setObject:CFUUID forKey:@"UUID"];

}
else
{
    CFUUID = [[NSUserDefaults standardUserDefaults] objectForKey:@"UUID"];
}

答案 2 :(得分:3)

如果您要在服务器上存储标识符以跟踪有关唯一身份用户的重要信息,那么我建议您将 identifierString 存储在" KeyChain"即使您的应用程序已被用户删除,它也会保留该标识符。

NSUserDefaults 保留数据,直到删除应用。即使应用被删除,钥匙串也会保留数据。

我有类似的情况,所以如果你的情况与我的情况相同,这可能会有所帮助。