nil/Nil/NULL/NSNull 차이점
값
속뜻
Null
(void*)0
C 포인터의 문자 0값
nil
(id)0
ObjC 객체의 문자 0값
Nil
(Class)0
ObjC 클래스의 글자 0값
NSNull
[NSNull null]
0값을 나타내는 단독 대상
NOTICE: 애플의 컴파일러가 컴파일할 때 objc 생성msgSend와 같은 방법으로 메시지를 보냅니다. 대상이 nil로 설정되었을 때, 어떤 종류의 실례적인 메시지를 찾지 않기 때문에 아무것도 하지 않습니다. 이것은 애플의 처리 방식입니다.
obj nil:[obj message] NO, NSException
obj NSNull:[obj message] NSException
nil, Nil, NULL 사용 비교
먼저 다음과 같은 실험을 수행합니다.
NSArray * array = [NSArray arrayWithObjects:@"good", @"morning", nil];
// array = nil; // :0
// array = NULL; // :0
// array = Nil; // :0
NSLog(@"%ld", array.count);// ,
Class class = [NSURL class];
// class = Nil; // :(null)
// class = nil; // :(null)
// class = NULL; // :(null)
NSLog(@"%@", class); // ,
int a = 10; int * p = &a;
// p = NULL; // :0x0
// p = nil; // :0x0//
p = Nil; // :0x0
NSLog(@"%p", p); // ,
결론:
nil, Nil, NULL, NSNull의 차이점
nil의 의미
한 대상을 가리키는 바늘이 비어 있고 대상 바늘에 값을 비워 야생 바늘의 발생을 방지하는 데 사용된다.nil을 빈 객체라고도 합니다. 풀린 객체와 값이 비어 있는 객체(NSNull)가 다르다는 의미입니다.NSNull은 객체입니다. 객체의 값이 비어 있을 뿐입니다. #ifndef nil # ifhas_feature(cxx_nullptr) # define nil nullptr # else # define nil __DARWIN_NULL # endif#endif
객체 포인터에 값을 공백으로 지정하려면 다음과 같이 하십시오.
NSString * name = nil;
NSString * url = nil;
id object = nil;
닐의 뜻.
클래스를 가리키는 포인터가 비어 있고 클래스 객체 포인터에 값이 비어 있음 #ifndef Nil # ifhas_feature(cxx_nullptr) # define Nil nullptr # else # define Nil __DARWIN_NULL # endif#endif
클래스 객체에 대한 값이 비어 있음:
Class class = Nil;
NULL의 의미
C 유형의 포인터를 가리키며 C 유형의 포인터에 빈 #if defined( need NULL) #undef NULL #ifdef 값을 지정하는 데 사용됩니다.cplusplus # if !defined(MINGW32) && !defined(_MSC_VER) # define NULL __null # else # define NULL 0 # endif#else # define NULL ((void*)0) #endif
C 유형 포인터에 값을 지정하려면 다음과 같이 하십시오.
int * a = NULL;
char * ch = NULL;
struct aStruct = NULL;
NSNull의 의미
NSNull은 하나의 클래스 방법만 가지고 있는 NSObject에서 상속된 클래스입니다.인스턴스 객체는 빈 컨텐트의 객체임을 나타냅니다.주로 수조, 사전에 쓰인다.
NSMutableArray * mArray = [NSMutableArray array];
[mArray addObject:[NSNull null]];
NSLog(@"%@", [mArray firstObject]); // :
NSMutableDictionary * dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"null"];
NSLog(@"%@", dict[@"null"]); // :
이를 통해 알 수 있듯이 사용 가능한 NSNull의 실례 대상은 그룹, 사전에서 위치를 차지하고 그 위치는 비어 있다.
참조:http://www.jianshu.com/p/562ecd82228f
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.