美文网首页iOS Interview
OC中给nil和NSNull对象发送消息

OC中给nil和NSNull对象发送消息

作者: 丁小丁iOS | 来源:发表于2015-12-31 10:45 被阅读815次

最近面试时被多次问到这个问题,自己也了解一些,但是没有通过代码验证,所以,说的时候也没有底气,不敢打包票,今天就验证了一下。


      NSString*str =nil;
      NSIntegerlen = str.length;//输出0
      NSString*subStr = [strsubstringFromIndex:2];// 0
      NSArray*arr =nil;
      NSIntegercou= arr.count;// 0
      idobj = arr[0];// obj = (id) 0x0
      NSString*obj2 = arr[3];// obj2 = (nsstring *)nil
      NSString*obj3 = arr[0];// obj3 = (nsstring *)nil
      idobj4 = arr[4];// obj4 = (id) 0x0
      NSString*str1 = [NSNullnull];
      NSIntegerlen1 = str1.length;// crash
      NSArray*arr1 = [NSNullnull];
      NSIntegercou1= arr1.count;// crash没有验证

从上面可以看出,给nil对象发送消息,是不会崩溃的,但是要么返回默认的0,要么返回nil对象。至于id类型的为什么返回0x0,而不是返回nil,我也是有些疑问的,nil和0x0的具体区别还有待研究。
而如果给nunull对象发送消息,则会引起crash,猜测因为它没有任何方法,所以会抛出'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x10fd9a4c0'的异常。

相关文章

  • OC中给nil和NSNull对象发送消息

    最近面试时被多次问到这个问题,自己也了解一些,但是没有通过代码验证,所以,说的时候也没有底气,不敢打包票,今天就验...

  • iOS消息机制相关

    (1)OC中给nil对象发送消息程序是否会crash? OC向nil发送消息,是不会崩溃的。 OC的函数调用都是通...

  • iOS消息机制相关

    OC中给nil对象发送消息程序是否会crash? OC想nil发送消息,是不会崩溃的。 OC的函数调用都是通过ob...

  • OC中的“空”

    原文:关于OC中的nil, NULL详解OC中给空对象发送消息程序会Crash吗? 各种“空” 关于nil nil...

  • NSNull

    // NSNull // 出现最多的就是 JSON 解析了 // OC 中,向nil发送消息不出出现问题 // 但...

  • 关于nil null一些小知识

    1.OC中的nil Nil NULL NSNull nil:是指OC中"对象"的空指针,所以基本数据类型和结构体不...

  • NSObject——概念原理

    1、野指针 2、僵尸对象 3、nil/Nil/NULL/NSNull的区别 nil:指向oc中对象的空指针 Nil...

  • 各种nil,野指针,僵尸对象

    nil:OC中的对象的空指针 Nil:OC中类的空指针 NULL:C类型的空指针 NSNull:数值类的空对象 野...

  • iOS 每天一道面试题

    同为菜逼,共同努力。 1.nil Nil NULL NSNull 区别。 nil:指向oc中对象的空指针,针对对象...

  • OC中nil、Nil、NULL、NSNull的区别

    nil nil表示一个OC对象(类对象除外)为空,也就是表示对象制作不指向任何对象。给nil对象发送消息时什么都不...

网友评论

  • 洛奇丶:NSString*str1 = [NSNullnull];
    NSIntegerlen1 = str1.length;// crash 试了 不会crach啊
  • 丁小丁iOS:简书里面的markdown能不能设置目录啊?

本文标题:OC中给nil和NSNull对象发送消息

本文链接:https://www.haomeiwen.com/subject/fdnihttx.html