解説
継承 | NSObject |
準拠 | NSObject (NSObject) |
フレームワーク | /System/Library/Frameworks/Foundation.framework |
使用可能 | OS X 10.0以降 |
iOS 2.0以降 | |
定義 | NSNull.h |
概要
「何もない」ことを表すクラスです。コレクションクラス(NSArrayやNSDictionary、NSSet)にオブジェクトを追加する場合に「何もない」ことを表したい場合があると思いますが、コレクションクラスにはnilが使えないため(末尾のマークとして使用されているので)このクラスがあります。
例えば、画像を読み込んで配列に格納するような場合、何かのエラーで画像が読み込めなかったりするとnilが返されたりするとコレクションクラスに追加することができなくなり、順序がずれることが起こりえます。そういった場合にNSNullのインスタンスを追加するといった使い道があります。
NSNullオブジェクトの作成
NSNullオブジェクトの作成には(+ null)メソッドを使用します。
NSNullオブジェクトを配列の要素にする
#pragma mark NSNull null -(void)method001 { NSArray *anArray =[[NSArray alloc] initWithObjects:@"aaa",[NSNull null],@"bbb",@"a",nil] ; NSLog(@"%s %@",__FUNCTION__,[anArray description]); }
NSNullオブジェクトの利用
配列の要素がNSNullかどうか知りたい場合、何を持って判定するかですがNSNullはオブジェクトですのでNULLやnilと比較はできません。isEqual:メソッドでNSNullクラスかどうかを判別します。
配列の要素がNSNullなら NSNull ! とログ表示
#pragma mark NSNull nullの判定 -(void)method002 { NSArray *anArray =[[NSArray alloc] initWithObjects:@"aaa",[NSNull null],@"bbb",@"a",nil] ; NSLog(@"%s %@",__FUNCTION__,[anArray description]); [anArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id obj,NSUInteger idx,BOOL *stop){ if ([obj isEqual:[NSNull null]]) { NSLog(@"NSNull !"); } return; }]; }
適合するプロトコル
サブクラス化の注意