IOS 基础之nil,NULL,NSNULL区别详解
IOS基础之nil,NULL,NSNULL区别详解
①nil:一般赋值给空对象。
②NULL:NULL是一个通用指针(泛型指针)。
一般赋值给nil之外的其他空值。如SEL等。
③NSNULL:[NSNullnull]是一个对象,他用在不能使用nil的场合。
因为在NSArray和NSDictionary中nil有特殊的含义(表示列表结束),所以不能在集合中放入nil值。如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类。NSNull只有一个方法:
+(NSNull*)null;
④当向nil发送消息时,返回NO,不会有异常,程序将继续执行下去。
而向NSNull的对象发送消息时会收到异常。
实例:
nil是对objectivecid对象赋空值
例如
NSString*string=[NSStringstringWithFormat:@"test"]; string=nil;
对于objectivec集合类对象比如数组对象,字典对象,当我们不需要再使用他们的时候,对他们release的同时最好也把他们赋值为nil,这样确保安全性,下面一个简单的一个例子:如果不赋值nil,可能导致程序崩溃
NSArray*array=[NSArrayarrayWithObjects:@"test",@"test1",nil]; [arrayrelease]; if(array) { //仅仅对数组release,并没有赋空值的话,在程序某个地方如果继续对数组操纵,程序直接崩溃 NSString*string=[arrayobjectAtIndex:0]; NSLog(@"%@",string); }
编程的时候对集合类对象先赋值为nil,再将其release这样可以保证程序安全性,苹果官方例子中也看到过viewDidUnload把对象赋值nil,然后在dealloc方法中将他们release,
Nil:AnullpointertoanObjective-Cclass.表示对类进行赋空值
NULL:Anullpointertoanythingelse, isforC-stylememorypointers.用于对非对象指针赋空值,比如C指针
NSNull对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,则可以用[NSNULLnull】返回的对象来初始化NSArray中的内容
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!