我有以下代码可在OSX 10.13之前的计算机上编译
FSRef ref;
OSType folderType = kApplicationSupportFolderType;
char path_c[PATH_MAX];
FSFindFolder(kUserDomain, folderType, kCreateFolder, &ref);
FSRefMakePath( &ref, (UInt8*)&path_c, PATH_MAX);
我需要它来处理最新版本。我该如何更改?当前说不存在这样的API
答案 0 :(得分:2)
现代等效语言要求使用Objective-C(++)或Swift。在Objective-C中,它将是:
NSFileManager *fm = [NSFileManager new];
NSURL *url = [fm URLForDirectory:NSApplicationSupportDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create:YES
error:NULL];
char path_c[PATH_MAX];
[url getFileSystemRepresentation:path_c maxLength:sizeof(path_c)];
我不确定您将如何使用path_c
。如果仅需要指向C字符串的指针作为路径,并且在释放url
对象之后将不再使用它,则可以使用url.fileSystemRepresentation
。更好的是,在可能的情况下,改用使用URL而不是路径字符串的API。