Mac OSX Deprecated API - FSRef ref;

Mac OSX Deprecated API - FSRef ref;

本文关键字:FSRef ref API OSX Deprecated Mac      更新时间:2023-10-16

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

现代等价物需要 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。