2010-02-11 7 views
2

명령 줄에 매개 변수를 사용하거나 사용하지 않고 호출 할 내 코코아 응용 프로그램이 있습니다.코코아 응용 프로그램에서 명령 줄 매개 변수를 결정하는 경우

응용 프로그램에서받은 매개 변수를 통해 결정을 내리고 싶습니다. 즉, 특수 매개 변수가 수신 된 경우 해당 매개 변수에 대한 조치를 실행하고 싶습니다. 어쨌든이 일을하기 위해 있습니까?

건배

답변

4

물론이 프로그램은 C 프로그램과 같은 main() 기능을 가지고 있습니다. 새로운 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하고 NSApplicationMaindocumentation에 대한 링크를합니다.

+2

+1 @ char를 반환하는 것이 처음이라고 생각합니다. –

+1

@Dave CharPtrArrayPtr로서 더욱 의미가 있습니다. CharPtrArrayPtr은 여전히 ​​한마디로 말하지만 Perlesque는 덜 보입니다. –

+0

@Jeremy가 "문자열 배열에 대한 포인터"로 생각하면 이해할 수 있습니다. 나는 왜 그것이 단지'char **'tho를 반환하지 않는지에 대해 주로 혼란 스럽다 ... –

2

당신은 쉽게 사용자 기본값에 NSArgumentDomain에 액세스 할 찾을 수 있습니다 :이 양식 -NSZombieEnabled YES의 인수를 처리 할

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

. 다른 형식의 인수 (예 : -NSZombieEnabled=YES)는 무시할 수 있습니다. 나는 소스를 테스트하거나 보지 않았습니다.

관련 문제