CFUUID - 创建ONCE并在应用程序的整个生命周期中使用

hp *_*der 2 xcode objective-c ios

我在我的代码中写了这些行:

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

但是每次应用程序启动时都会调用这些行.

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

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

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

Mat*_*uch 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);
/* ... */
Run Code Online (Sandbox Code Playgroud)


Vig*_*esh 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"];
}
Run Code Online (Sandbox Code Playgroud)