美文网首页
iOS OC中关于对象为nil时的方法调用

iOS OC中关于对象为nil时的方法调用

作者: gerrywanggang | 来源:发表于2018-05-24 14:16 被阅读0次

很多同学在碰到nil时,有点不知道所措。其实nil作为对象调用任何方法都不会出错,没有任何效果。

以下为验证代码:

#import "ViewController.h"

#import "MyObject.h"

@interface ViewController ()

@property (strong, nonatomic) MyObject *obj;

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    MyObject*obj =nil;

    self.obj= obj;

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event {

    NSLog(@"test send any message to nil:%@",self.obj);

    [self.obj anyMethod];

}

//MyObject类

@interfaceMyObject :NSObject

- (void)anyMethod;

@end

#import "MyObject.h"

@implementation MyObject

@end

MyObject类的.m文件不需要对anyMethod方法做任何实现。在Viewcontroller中的.m中使用touchBegan方法对nil对象,调用anyMethod方法。

结果输出如下:

2018-05-24 11:49:38.554805+0800 detest0523[7371:104618] test send any message to nil:(null)

2018-05-24 11:49:39.187794+0800 detest0523[7371:104618] test send any message to nil:(null)

2018-05-24 11:49:40.009444+0800 detest0523[7371:104618] test send any message to nil:(null)

2018-05-24 11:49:40.625293+0800 detest0523[7371:104618] test send any message to nil:(null)

2018-05-24 11:49:41.251806+0800 detest0523[7371:104618] test send any message to nil:(null)

没有任何崩溃和效果产生,结论就是:

可以对nil对象发送任何消息,但没有任何反应。

BTW: 如果nil作为作为参数传入方法或者函数中,还是会造成崩溃的,那是因为参数不合法造成的问题。

相关文章

  • iOS OC中关于对象为nil时的方法调用

    很多同学在碰到nil时,有点不知道所措。其实nil作为对象调用任何方法都不会出错,没有任何效果。 以下为验证代码:...

  • 007. From C++ to objective-C

    -表示常规方法,+表示静态方法 指针对象调用函数:当ptr为nil时,OC可以忽略这次调用(C++可能会抛出异常)...

  • nil,Nil,NULL及NSNull的区别

    nil和Nil nil通常表示类的实例对象的空值,Nil通常表示类的对象的空值,在OC中调用类的实例方法,最终也是...

  • OC中的“空”

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

  • iOS消息机制相关

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

  • 读博客日记

    一. OC中让一个nil对象执行方法不会崩溃 消息在OC中方法调用是一个消息发送的过程。OC方法最终被生成为C函数...

  • iOS消息机制相关

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

  • nil,Nil,NULL,NSNull

    nil: OC中对象为空,指向不存在的对象指针 Nil:OC中类为空,指向0的类指针 NULL:C指针为空,在指针...

  • iOS中类和对象,nil/Nil/NULL的区别

    nil、Nil、NULL的区别 nil:指向oc中对象的空指针,针对对象。 Nil:指向oc中类的空指针,针对类。...

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

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

网友评论

      本文标题:iOS OC中关于对象为nil时的方法调用

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