ユーザーが iOS 7 で iCloud キーチェーン サポート (iOS の既定値?) をオンにしておらず、次のコードを実行した後、iCloud キーチェーン サポートをオンにするとどうなるのだろうか。
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"com.joseandro.UUID" accessGroup:nil];
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
NSString* UUID = [(NSString *)string autorelease];
[keychain setObject:@"UNIQUE_IDS_SERVICE" forKey:kSecAttrService];
[keychain setObject:@"DeviceUUID" forKey:kSecAttrAccount];
[keychain setObject:UUID forKey:kSecValueData];
[keychain setObject:kSecAttrAccessibleAlwaysThisDeviceOnly forKey:kSecAttrAccessible];
[keychain release];
keychain = nil;
以前に保存された「DeviceUUID」値のデータが使用されるか、キーチェーンが完全に消去されるため、返される値が空になり (次のコードで)、それが発生する前に保存されていたものが失われますか?
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"com.joseandro.UUID" accessGroup:nil];
NSString* UUID = [keychain objectForKey:(kSecValueData)];
return UUID;