Mac OSX不推荐使用的API-FSRef参考;

时间:2019-02-11 19:36:49

标签: c++ macos

我有以下代码可在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

1 个答案:

答案 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。