1.nil: 指向一個(gè)對(duì)象的空指針, 對(duì)Objective-C中id對(duì)象付空值.
2.Nil:指向一個(gè)類的空指針, a null pointer to a Objective-C class.表示對(duì)類進(jìn)行付空值.
3.NULL:指向其它類型的空指針(如:C類性,基本類型)A null pointer to anything else, is for C-style memory pointers.
4.NSNull:Objective-C中的一個(gè)類,包含 + (NSNull *)null;單例方法,多用于集合中值為空的對(duì)象。
For example:
NSString *string = [NSString stringWithFormat:@"Test"]; string = nil;
NSURL *url = nil;
NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil];
[array release];
if (array)
{
//僅僅對(duì)數(shù)組release,并沒有賦空值的話,在程序某個(gè)地方如果繼續(xù)對(duì)數(shù)組操縱,程序直接崩潰
NSString * string = [array objectAtIndex:0];
NSLog(@"%@",string);
}
Class class = Nil;
int *pointer = NULL;
NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], [NSNull null], [[NSObject alloc] init], [NSNull null], nil];
NSArray 和 NSDictionary 都是以nil結(jié)尾;
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:nil forKey:@"Key-nil"]; 會(huì)crash
[dictionary setObject:[NSNull null] forKey:@"Key-nil"];不會(huì)引起crash
[dictionary setObject:(value == nil ? [NSNull null] : value) forKey:@"key"];