2010-08-13 2 views
0

:차이 [0] 다음을 사용하여 차이점은 무엇

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *dir = [paths objectAtIndex:0]; 

    NSString *dir2 = paths[0]; // this throws incompatible type exception 
+0

학습 C를 당신이 목표 - C 스마트 움직임이다 사용하기 전에, BTW. –

+0

감사! 오래 전 C 언어로 프로그램을 작성했습니다. – azamsharp

답변

3
  1. paths 당신이 objectAtIndex: 메시지를 보내는 NSArray의 인스턴스에 대한 포인터가. 수신기는 id을 반환합니다.
  2. paths[0]은 순수한 C 배열의 시작 부분의 메모리 주소입니다. []NSArray은 같은 것이 아닙니다. 즉, 지금이 질문을 찾을 수 있습니다 모든 밖으로 그냥 참고로
+0

그래서 경로 [0]을 사용할 때 수신기 유형은 무엇입니까? 배열의 시작 부분의 메모리 주소를 나타내는 일종의 int 값입니까? – azamsharp

+1

paths [0]은 포인터 일뿐입니다. 그것은 방법이 없다는 것을 의미하는 대상이 아닙니다. 순수한 C에서는 배열을 사용하기 위해서 무엇이 포함되어 있는지를 알아야합니다. – falconcreek

1

... LLVM으로

은, 오브젝티브 C는 객체 첨자를 지원합니다. 그래서

paths[0] 

[paths objectAtIndex:0] 

제공 경로에 동등한 NSArray를이다 인

[paths objectAtIndexedSubscript:0] 

동일하다. 더 오브젝티브 C 리터럴 구문을 보려면

, 여기에 문서를 참조하십시오 http://clang.llvm.org/docs/ObjectiveCLiterals.html