2011-10-13 3 views
7

무엇이 가장 좋은 방법인지 알아 내려고 : (NSError**)을 사용하는 방법을 사용하는 경우 nil 또는 NULL으로 보내는 것이 더 낫습니까? 문서에서 예를 들어"오류 : NULL"또는 "오류 : 없음"?

,

NSArray *items = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];

그것은 "오류 정보를하지 않으려면이 매개 변수 전무를 지정할 수 있습니다."라고 반면에, 그것의 이중 포인터 이후, NULL도 의미가있는 것 같아?

답변

10

기술적으로 NULL이 올바른 대답이며 문서가 잘못되었습니다.

실제로는 중요하지 않습니다. NULLnil은 모든 의도와 목적을 위해 동일합니다.

변경 될 수 있으며 언어 호환을 유지할 수 있지만 톤과 톤을 깨지 않고 변경 될 수 없습니다.

언제든지 버그를 신고 할 수 있습니다.

+4

유형이 다릅니다. 그들은 모두 0이지만 "NULL"은 void *이고 "nil"은 id이며 "Nil"은 클래스 포인터입니다. http://stackoverflow.com/questions/1564410/when-to-use-nil-and-null-in-objective-c – ARC

+0

예. 링크 주셔서 감사합니다. 그리고 이것은 nil/Nil이 타입에 대한 포인터에 대한 포인터를 나타내지 않기 때문에이 경우에는 NULL이어야합니다. 그것은 결국 무언가 (무효 * id *) 또는 일부 그런 넌센스 말입니다. – bbum

+0

감사합니다. 내가 'NULL'이 어떻게 든이 메소드에서 역 참조를 얻게된다면 문제가 발생하지 않을까 걱정된다. 이 게시물 [http://stackoverflow.com/questions/3581544/exception-codes-kern-protection-failure-at-0x00000000-error]에 따르면 'nil'이 더 안전한 선택 인 것 같습니다. –