programing

목표 C에서의 NULL 대 0

subpage 2023. 4. 14. 21:41
반응형

목표 C에서의 NULL 대 0

observeValueForKeyPath:ofObject:change:context:- 왜 docs는NULL대신nil콘텍스트 포인터를 지정하지 않은 경우

nil대신 사용되어야 합니다.id, Java 및 C++ 프로그래머가 오브젝트에 대한 포인터라고 생각할 수 있습니다.사용하다NULL오브젝트 이외의 포인터의 경우.

이 메서드의 선언을 확인합니다.

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
    change:(NSDictionary *)change context:(void *)context

콘텍스트는void *(즉, C스타일의 포인터)그래서,NULL(때로는 로 선언되기도 한다).(void *)0)가 아니라nil(그것은 타입입니다.id).

기술적으로는 같은 (0)이지만, 일반적으로 오브젝트 C 오브젝트 타입에는 영이 사용되고, c 스타일 포인터에는 NULL이 사용됩니다(void *).

엄밀히 말하면 같은 것으로, 스타일만 다릅니다.

  • Objective-C 스타일은 다음과 같습니다.nil에 사용할 내용입니다.idtype(및 오브젝트에 대한 포인터)을 입력합니다.
  • C스타일은 그렇다고 한다.NULL에 사용하는 것입니다.void *.
  • C++ 스타일은 일반적으로 다음과 같이 말합니다.0.

일반적으로 유형이 선언된 언어와 일치하는 변형을 사용합니다.

NULL의 결과입니다.nil, 아무것도 표시되지 않는 포인터.

여기서,

를 클릭합니다NULL is zero typed as void*.

가지 중요한 점은 NULL로 메시지를 보낼 수 없기 때문에 많은 장소에서 objective-C에 0을 사용하는 것이 좋습니다.

거의 비슷해요.

nil는 Objective-C 스타일로 사용됩니다.어디에NULLC 타입 포인터용이며, 에 대한 typedef'입니다.(void *).

언급URL : https://stackoverflow.com/questions/557582/null-vs-nil-in-objective-c

반응형