现代macOS应用程序使用沙箱,只允许更新沙箱中的文件。看见
File System Programming Guide: The Library Directory Stores App-Specific Files
. 另请参见
About App Sandbox
.
我不建议使用那样的硬编码路径。我建议从
NSFileManager
NSURL *fileURL = [[NSFileManager defaultManager] URLForDirectory:NSLibraryDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:true error:&error];
NSAssert(!error, @"Unable to get library directory: %@", [error localizedDescription]);
NSLog(@"%s", fileURL.path.UTF8String);
返回:
/用户/{username}/Library/Containers/{com.domain.app}/Data/Library
然后可以将其传递给C函数。
顺便说一句,苹果明确建议我们不要在
Preferences
子文件夹。他们
warn us
:
此目录包含特定于应用程序的首选项文件。您不应该自己在此目录中创建文件。相反,请使用
NSUserDefaults
类别或
CFPreferences
API来获取和设置应用程序的首选项值。