nil / Nil / NULL / NSNull的区别

1.nil: 指向一个对象的空指针, 对Objective-C中id对象付空值.
2.Nil:指向一个类的空指针, a null pointer to a Objective-C class.表示对类进行付空值.
3.NULL:指向其它类型的空指针(如:C类性,基本类型)A null pointer to anything else, is for C-style memory pointers.
4.NSNull:Objective-C中的一个类,包含 + (NSNull *)null;单例方法,多用于集合中值为空的对象。
For example:
NSString *string = [NSString stringWithFormat:@"Test"]; string = nil;

NSURL *url = nil;

NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil];
[array release];

if (array)
{

//仅仅对数组release,并没有赋空值的话,在程序某个地方如果继续对数组操纵,程序直接崩溃
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结尾;

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:nil forKey:@"Key-nil"]; 会crash
[dictionary setObject:[NSNull null] forKey:@"Key-nil"];不会引起crash
[dictionary setObject:(value == nil ? [NSNull null] : value) forKey:@"key"];

你可能感兴趣的:(nil / Nil / NULL / NSNull的区别)