iOSにおけるnil、Nil、NULL、NSNullの詳細


ObjCの中のいくつかの空の値の記号はいつももう少しで私を死にそうにして、これらの基礎のものは少しずつはっきりさせて、コード農の基本的な素質を高めます。
nil
nilはObjCオブジェクトの字面の空白値であり、idタイプのオブジェクトに対応するか、@interface声明を使用するObjCオブジェクトです。
たとえば:

NSString *someString = nil;
NSURL *someURL = nil;
id someObject = nil;
if (anotherObject == nil) // do something

定義:

// objc.h
#ifndef nil
# if __has_feature(cxx_nullptr)
#  define nil nullptr
# else
#  define nil __DARWIN_NULL
# endif
#endif
 
// __DARWIN_NULL in _types.h
 
#define __DARWIN_NULL ((void *)0)

Nil
NilはObjCタイプの文書の空き値で、クラスタイプのオブジェクトに対応します。
たとえば:
Class someClass=Nil;
Class another Class=[NSString class]
定義ステートメントとnilは同じです。値は同じです。

// objc.h
#ifndef Nil
# if __has_feature(cxx_nullptr)
#  define Nil nullptr
# else
#  define Nil __DARWIN_NULL
# endif
#endif

NULL
NULLは任意のCポインタの空白値である。
たとえば:

int *pointerToInt = NULL;
char *pointerToChar = NULL;
struct TreeNode *rootNode = NULL;
定義:

// in stddef.h 
#define NULL ((void*)0)
NSNull
NSNullは空の値を表すクラスで、ObjCオブジェクトです。実際には、セット中の値が空のオブジェクトを表すのに一般的に使用される、一例の方法しかない。
例の説明:
//nilは集合終了の標識として使われているので、Foundation集合にnilは保存できません。
NSAray*array=[NSAray array WithObjecs:@one]、@two、nil]
//エラーの使用
NSMutable Dictionary*dict=[NSMutable Dictionary dictionary]
[dict setObject:nil forKey:@someKey]
//正しい使い方
NSMutable Dictionary*dict=[NSMutable Dictionary dictionary]
[dict setObject:[NSNull null]forKey:@「someKey」
定義:

/* NSNull.h
  Copyright (c) 1994-2012, Apple Inc. All rights reserved.
*/
#import <Foundation/NSObject.h>
@interface NSNull : NSObject <NSCopying, NSSecureCoding>
+ (NSNull *)null;
@end

結び目
nil,Nil,NULLの値が同じであるが,それらの間の書面的意味を理解することが重要であり,コードをより明確にし,読み取り可能性を高める。
以上述べましたが、本文の内容は全部です。お好きになってください。