Objective-C에서 NULL 대 nil
에 observeValueForKeyPath:ofObject:change:context:
- 왜 문서를 사용하지 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)이지만 nil은 일반적으로 Objective-C 객체 유형에 사용되며 NULL은 c 스타일 포인터 (void *)에 사용됩니다.
그것들은 기술적으로 같은 것이고 스타일 만 다릅니다 :
- Objective-C 스타일은 유형 (및 객체에 대한 포인터)에
nil
사용할 것을 말합니다id
. - C 스타일
NULL
은 그것이 당신이 사용하는 것이라고 말합니다void *
. - C ++ 스타일은 일반적으로 그냥 사용해야한다고 말합니다
0
.
나는 일반적으로 형식이 선언 된 언어와 일치하는 변형을 사용합니다 .
NULL
는 IS C equivalent
의 nil
아무것도에 대한 포인터는;
여기서 nil is zero typed as id
,
NULL is zero typed as void*
.
한 가지 중요한 점 은 NULL로 메시지를 보낼 수 없습니다. 따라서 objective-C에서는 여러 위치에서 nil을 사용하는 것이 좋습니다.
그들은 거의 같은 것을 제외하고는
nil
Objective-C 스타일로 사용됩니다. NULL
C 유형 포인터의 위치 는이고 typdef'ed (void *)
입니다.
참고 URL : https://stackoverflow.com/questions/557582/null-vs-nil-in-objective-c
'Programming' 카테고리의 다른 글
T-SQL에서 디버그 시간에 테이블 변수의 값을 보는 방법은 무엇입니까? (0) | 2020.05.19 |
---|---|
Argparse :“선택적 인수”에 나열된 필수 인수? (0) | 2020.05.19 |
프로그래밍 방식으로 iPhone 캘린더에 커스텀 이벤트 추가 (0) | 2020.05.19 |
WebView로 HTML 파일로드 (0) | 2020.05.19 |
AppCompat-v7이 포함 된 도구 모음 및 상황 별 작업 모음 (0) | 2020.05.19 |