在可可应用程序中决定命令行参数

时间:2010-02-11 19:18:13

标签: objective-c cocoa macos

我有我的Cocoa应用程序,它将在命令行中使用或不使用参数调用。

我想对应用程序上收到的参数做出决定,即,如果收到特殊参数,我想触发一个操作。 无论如何这样做?

干杯

2 个答案:

答案 0 :(得分:4)

当然,您的程序具有main()功能,就像任何C程序一样。新Cocoa项目附带的默认项目只调用NSApplicationMain(),但如果您愿意,可以执行其他操作。

如果您想从程序中的其他位置轻松访问命令行信息,可以使用_NSGetArgv()_NSGetArgc()_NSGetEnviron()_NSGetProgname()。它们在crt_externs.h中声明:

extern char ***_NSGetArgv(void);
extern int *_NSGetArgc(void);
extern char ***_NSGetEnviron(void);
extern char **_NSGetProgname(void);

以下是关于这些功能的blog post以及指向NSApplicationMain documentation的链接。

答案 1 :(得分:2)

您可能会发现在用户默认设置中访问NSArgumentDomain更容易:

NSDictionary *const args = [[NSUserDefaults standardUserDefaults]
                             volatileDomainForName:NSArgumentDomain];

这将处理-NSZombieEnabled YES形式的参数。其他形式的参数(例如-NSZombieEnabled=YES)可能会被忽略;我没有测试或查看过来源。