iOS 개발 -nil/Nil/NULL/NSNull 사용
Nil: A null pointer to an Objective-C class.
NULL: A null pointer to anything else. (#define NULL((void *) 0) NULL은 일반 포인터(일반 포인터)입니다.
NSNull: A class defines a singleton object used to represent null values in collection objects (which don't allow nil values). [NSNull null]: The singleton instance of NSNull.
[NSNull null]은nil을 사용할 수 없는 장소에 사용되는 객체입니다.
NSArray와 NSDictionary에서 nil에는 특별한 의미(목록이 끝났다는 뜻)가 있기 때문에 집합에 nil 값을 넣을 수 없습니다.NSNull 클래스는 아무것도 없음을 나타내는 값을 저장해야 하는 경우에 사용할 수 있습니다.NSNull에는 + (NSNull*) null,
nil은 대상에 값을 부여하는 데 사용되고 (Objective-C의 모든 대상은 id 유형에 속한다), NULL은 모든 바늘에 값을 부여하고, NULL과 nil은 서로 바꿀 수 없으며, Nil은 클래스 바늘에 값을 부여한다. (Objective-C의 클래스는 하나의 대상이고 클래스의 meta-class의 실례이며, NSNull은 집합 작업에 사용된다. 비록 모두 빈 값이지만 사용하는 장소는 완전히 다르다.
id object = nil;
//
if (object)
{
// object
}
//
if (object == nil)
{
}
// ,
NSArray *array = [[NSArray alloc] initWithObjects:@"A", @"B", nil];
//
NSString *element = [array objectAtIndex:2];
if ((NSNull *)element == [NSNull null])
{
}
그룹 요소가 비어 있는지 아닌지를 판단하려면 아래의 문법이 모두 무효입니다
if(!element)
if([element length]>0)
if(element== NULL)
if(element == Nil)
사전 대상의 요소가 비어 있는지 판단하기
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"A", @"A", @"B", @"B", nil];
NSString *value = [dictionary objectForKey:@"A"];
if ((NSNull *)value == [NSNull null]) { }
요약:
1,nil: 일반적으로 빈 대상에게 값을 부여한다.2. NULL: 일반적으로 nil 이외의 빈 값에 값을 부여합니다.예를 들어 SEL 등;3. NSNULL: NSNull은 오직 하나의 방법: +(NSNull*)null;[NSNull null]은 NSArray와 NSDictionary에 nil이 아닌 빈 값을 추가하는 데 사용됩니다.[NSNull null]은 nil을 사용할 수 없는 경우에 사용되는 객체입니다.4.nil에 메시지를 보낼 때 NO로 되돌아와 이상이 없고 프로그램은 계속 실행됩니다.NSNull 객체에 메시지를 보내면 예외가 발생합니다.NSArray와 NSDictionary에서 nil에는 특별한 의미(목록이 끝났다는 뜻)가 있기 때문에 집합에 nil 값을 넣을 수 없습니다.NSNull 클래스는 아무것도 없음을 나타내는 값을 저장해야 하는 경우에 사용할 수 있습니다.NSNull에는 + (NSNull*) null,
nil은 객체 포인터가 비어 있고 Nil은 클래스 포인터가 비어 있으며 NULL은 기본 데이터 형식이 비어 있습니다.
기술적 실현에 있어 닐, 넬은 모두 같다.그러나 실제로 이런 정의는 코드의 가독성을 높일 수 있다.만약 당신이 누군가에게 NULL 값을 전달한다면, 누군가는 C지침을 받았다고 생각할 것이다.닐이라면 받아들이는 것이 대상이라고 생각한다.닐은 클라스를 받아들였다고 생각했다.그렇다면 NSNull 과 nil 의 차이점은 무엇일까요?대상 obj가 nil이면 [obj 메시지] 를 호출하면 NSException 이상이 나타나지 않고 NO로 정상적으로 되돌아옵니다.객체 obj가 NSNull이면 [obj message]에서 NSException 예외가 발생합니다.oc는 nil 대상에게 메시지를 보낼 때 시스템이 이상을 일으키지 않고 0값을 되돌려주는 특징이 있습니다. 이것은 JAVA의 짜증나는 NullPointer Exception과 C/C++ 프로그램의 직접 붕괴 처리와 완전히 다르기 때문에 매우 유용합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.