防止备份到iCloud,代码是否正确?

我正在下载许多音频和video文件并将它们存储在我的主目录中。 现在我想“阻止备份到iCloud”,所以我为我的每个文件的URL添加了以下代码

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { const char* filePath = [[URL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup"; u_int8_t attrValue = 1; int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); return result == 0; } 

谁能告诉我这个代码适用于所有IOS版本。 如果没有,请建议正确的方法来做到这一点。 谢谢

谁能告诉我这个代码适用于所有IOS版本。

不,它没有。 Apple在其技术说明中引入了“不备份”标志 ,明确指出

新的“不备份”属性仅供iOS 5.0.1或更高版本使用。

他们还会告诉您需要为旧iOS版本做些什么:

在iOS 5.0及更早版本中,应用程序需要将其数据存储在/Library/Caches以避免备份。 由于旧系统会忽略此属性,因此您需要确保您的应用程序符合您的应用程序支持的所有iOS版本上的iOS数据存储指南。

您可以将此代码用于iOS 5.1或更高版本

 - (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString { NSURL *fileURL = [NSURL fileURLWithPath:filePathString]; assert([[NSFileManager defaultManager] fileExistsAtPath: [fileURL path]]); NSError *error = nil; BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error]; return success; }