Objective-C 에서 UUID 생성 및 NSUserDefaults 저장 방법
아래 예제는 UUID 문자열을 생성해서
[NSUserDefaults standardUserDefaults] 에 저장하고,
이미 저장된 값이 있으면 그것을 그대로 재사용하는 코드입니다.
1. UUID 생성 후 NSUserDefaults에 저장하기
한 번 생성한 UUID를 app_uuid 키로 저장하고, 이후에는 같은 값을 계속 사용합니다.
// UUID 생성 & NSUserDefaults 저장 / 로드
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *uuid = [defaults stringForKey:@"app_uuid"];
if (uuid == nil) {
// UUID 최초 생성
uuid = [[NSUUID UUID] UUIDString];
[defaults setObject:uuid forKey:@"app_uuid"];
// [defaults synchronize]; // 최신 OS에서는 거의 필요 없음
}
NSLog(@"UUID = %@", uuid);
2. 함수 형태로 만들기 (추천)
아래처럼 메서드로 만들어 두면, 어디에서든 간단하게 호출해서 UUID를 사용할 수 있습니다.
+ (NSString *)loadOrCreateUUID {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *uuid = [defaults stringForKey:@"app_uuid"];
if (uuid == nil) {
uuid = [[NSUUID UUID] UUIDString];
[defaults setObject:uuid forKey:@"app_uuid"];
}
return uuid;
}
// 사용 예시
NSString *uuid = [MyClass loadOrCreateUUID];
NSLog(@"UUID = %@", uuid);
3. 참고 사항
synchronize는 최신 iOS / macOS에서는 자동 저장이 되기 때문에 거의 호출할 필요가 없습니다.- 앱을 삭제했다가 다시 설치하면
NSUserDefaults값은 모두 초기화됩니다. - 앱 삭제 후에도 유지되는 영구적인 ID가 필요하다면, Keychain에 UUID를 저장하는 방식을 사용하는 것이 좋습니다.