Mac app默认工作目录

toa*_*tie 5 macos xcode cocoa

我之前在Xcode中创建了很多应用程序,并且它们的默认工作目录始终是.app文件所在的目录,因此我访问了内容数据,如Whatever.app/Contents/Resources.我知道这可能不是正确的方法,但它始终有效.无论如何,无论是从最近的Xcode更新还是出于其他原因,他们的默认工作文件夹现在都被设置为"/".这只发生在我从Finder运行.app文件时.如果我在Xcode中运行它,文件夹路径是正确的(我可以在可执行选项中设置该路径,但它对直接运行.app时发生的情况没有影响).这是某个地方还是新标准?

小智 7

对于资源,使用这个很酷的代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"awesomepic" ofType:@"png"];
Run Code Online (Sandbox Code Playgroud)

你永远不应该依赖PWD与Cocoa.相反,尽可能使用Cocoa API.只有Apple没有提供其他方法时才应使用BSD API.


globheader.h

static char *appdir;
Run Code Online (Sandbox Code Playgroud)

appcontroller.m

#import "globheader.h"

@implementation AppController

- (void)method {
  appdir = [[[NSBundle mainBundle] bundlePath] UTF8String];
}

@end
Run Code Online (Sandbox Code Playgroud)

cppcode.cpp

#include "globheader.h"

int main() {
  printf("%s", appdir);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)