向nil发送消息

  几乎所有面相对象的语言都会有nil这样的概念:不指向任何对象的指针。在 Objective-C中,nil是值为0的指针。

  多数面向对象的语言不允许向nil发送消息。所以在发送消息前,必须检查指针是否为nil,从而导致出现大量下面的代码:

if(fido!=nil){

      [fido goGetTheNewsPaper];

      }

  Objective-C则不同。在Objective-C中,可以向nil发送消息,什么事情也不会发生。

  因此,下面这段代码是完全"合法"的:

Dog*fido=nil;

[fido goGetNewsPaper];

  重点1:如果程序向某个对象发送了消息,但却没有得到预期的结果,请检查消息接收方是否为nil。

  重点2:向nil发送消息,得到的返回值没有意义。

 

Eg:

Dog*fido=nil;

Newspaper*daily=[fido goGetNewsPaper];

  在这段代码中,daily的值将为0。通常情况下,如果期望的方法返回值是数字或指针,那么向nil发送消息,得到的返回值为0。

  但是,如果期望的方法返回值是其他类型(例如结构struct),则得到的返回值降无法预期。

转载于:https://www.cnblogs.com/jerry-q1/articles/5135222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值