我有我的Cocoa應用程序,它將在命令行中使用或不使用參數進行調用。對可可應用中的命令行參數作出決定
我想對應用程序接收的參數作出決定,即如果收到特殊參數,我想對其觸發一個操作。 反正有這樣做?
乾杯
我有我的Cocoa應用程序,它將在命令行中使用或不使用參數進行調用。對可可應用中的命令行參數作出決定
我想對應用程序接收的參數作出決定,即如果收到特殊參數,我想對其觸發一個操作。 反正有這樣做?
乾杯
當然,你的程序有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的鏈接。
你可能會發現更容易訪問NSArgumentDomain
在用戶的默認值:
NSDictionary *const args = [[NSUserDefaults standardUserDefaults]
volatileDomainForName:NSArgumentDomain];
這將處理表單-NSZombieEnabled YES
的論點。其他形式的參數(如-NSZombieEnabled=YES
)可能會被忽略;我沒有測試過或看過源代碼。
+1我認爲這是我第一次見到任何返回'char ***' – 2010-02-11 20:44:55
@Dave它作爲CharPtrArrayPtr更有意義,它仍然相當滿意,但看起來不像Perlesque。 – 2010-02-13 02:12:00
@Jeremy認爲它是一個「指向字符串數組的指針」,這有助於我理解它。我主要困惑,爲什麼它不只是返回'char **'tho ... – 2010-02-13 06:07:30