2011-02-28 6 views
36

이 기능에 대한 전체 문서는 (인터페이스가 crt_externs.h에 존재)이 있습니까 : _NSGetArgc_NSGetArgv 내가이 기능에 대한 애플의 웹 사이트에있는 모든 문서를 얻을 수 없습니다.액세스 명령 행 인수

답변

68

, 당신은 할 수 있습니다 :

NSArray *arguments = [[NSProcessInfo processInfo] arguments]; 
+2

고마워요.하지만 이건 주 기능에서 괜찮아요? _NSGetArgc 및 _NSGetArgv와 같은 프로그램의 어느 곳에서도 가능하지 않습니다. – iPadDevloperJr

+1

예 - 어느 곳에서나 (나는 그것이 당신에게 그것이 괜찮지 않을 수도 있다는 인상을 주 었는지 모르겠습니다.). – bbum

7

이러한 함수의 접두사가 "_"로되어 있기 때문에 대개 사적인 것으로 사용자가 사용하지 않기로 한 기호입니다. 명령 줄 인수를 얻어야하는 경우 NSProcessInfo를 조회하는 것이 더 좋은 방법입니다. 당신이 할 필요가 코코아의 명령 행 인수를 얻을 경우

+0

감사합니다.이 기사 (http://unixjunkie.blogspot.com/2006/07/access-argc-and-argv-from-anywhere.html)를 읽었으며이 기능과 용량에 대해 궁금합니다. 어디서나 명령 줄 인수에 액세스 할 수 있습니다. – iPadDevloperJr

+0

@Evariste 예, 어디에서나 사용할 수 있습니다. NSProcess info는 현재 프로세스에 대한 정보를 반환합니다. – s73v3r

24

또한 Greg Miller 또는 Alex Rozanski하여 블로그 게시물에 설명 된대로 NSUserDefaults을 사용하여 명령 줄 인수에 액세스 할 수 있습니다.

기본적으로 [NSUserDefaults standardUserDefaults]을 호출하여 NSUserDefaults 인스턴스를 가져온 다음 boolForKey: 또는 stringForKey:과 같은 메시지를 사용하여 값에 액세스합니다.

공식 Apple 설명서는 here입니다.

+1

알렉스로 잔 스키 (Alex Rozanski)가 독자적으로 게시물을 발견 할 때까지이 대답을 알지 못했습니다. 설명 된 방법 중 하나가 선호됩니까? NSUserDefaults를 사용하는쪽으로 향하고 있는데 그 이유는 인수를 구문 분석 할 필요가 없으며 값을 생략하지 않았 음을 확인하기 때문입니다. NSUserDefaults 메서드를 사용하지 않는 이유가 없는지 확인하고 싶습니다. – GTAE86

+0

선호하는 방법이 있는지 나는 모른다. 그러나이 메소드를 사용하여'objectForKey :'가'nil'을 리턴하는지 평가하여 명령 행 옵션이 사용되는지 확인합니다. 샘플 코드는 https://github.com/mkroehnert/SaneKit/blob/master/Tools/scantool.m#L79에서 찾을 수 있습니다. – MKroehnert