我有我的Cocoa应用程序,它将在命令行中使用或不使用参数调用。
我想对应用程序上收到的参数做出决定,即,如果收到特殊参数,我想触发一个操作。 无论如何这样做?
干杯
答案 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
)可能会被忽略;我没有测试或查看过来源。