当前位置: 移动技术网 > IT编程>移动开发>IOS > IOS 基础之nil,NULL,NSNULL区别详解

IOS 基础之nil,NULL,NSNULL区别详解

2019年07月24日  | 移动技术网IT编程  | 我要评论

小品剧本搞笑,战争房间,非诚勿扰20100403期

ios 基础之nil,null,nsnull区别详解

① nil:一般赋值给空对象。

② null:null 是一个通用指针(泛型指针)。

一般赋值给 nil 之外的其他空值。如sel等。

③ nsnull:[nsnull null] 是一个对象,他用在不能使用 nil 的场合。

因为在 nsarray 和 nsdictionary 中 nil 有特殊的含义(表示列表结束),所以不能在集合中放入 nil 值。如要确实需要存储一个表示“什么都没有”的值,可以使用 nsnull 类。nsnull只有一个方法:

+ (nsnull *) null;

④ 当向 nil 发送消息时,返回 no,不会有异常,程序将继续执行下去。

而向 nsnull 的对象发送消息时会收到异常。

实例:

nil 是对objective c id 对象赋空值

例如

nsstring * string = [nsstring stringwithformat:@"test"];
  string = nil;

对于objective c 集合类对象 比如数组对象,字典对象,当我们不需要再使用他们的时候,对他们release 的同时最好也把他们赋值为nil,这样确保安全性,下面一个简单的一个例子:如果不赋值nil,可能导致程序崩溃

nsarray * array = [nsarray arraywithobjects:@"test",@"test1" ,nil];
  [array release];
  
  if (array)
  {
    //仅仅对数组release,并没有赋空值的话,在程序某个地方如果继续对数组操纵,程序直接崩溃
    nsstring * string = [array objectatindex:0];
    nslog(@"%@",string);
  }

编程的时候对集合类对象先赋值为nil,再将其release这样可以保证程序安全性,苹果官方例子中也看到过viewdidunload把对象赋值nil,然后在dealloc方法中将他们release,

nil: a null pointer to an objective-c class.表示对类进行赋空值

null: a null pointer to anything else,  is for c-style memory pointers. 用于对非对象指针赋空值,比如c指针

nsnull 对于像nsarray这样的类型,nil或null不能做为加到其中的object,如果定义了一个nsarray,为其分配了内存,又想设置其中的内容为空,则可以用[nsnull null】返回的对象来初始化nsarray中的内容

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网