objc中向一个nil对象发送消息将会发生什么?

什么都不会发生!!!事实上发生了些事情。

SomeClass * someObject;
someObject = nil;
[someObject doSomething];

就像这样,向nil发送了doSomething;OC中nil是被当做0定义的。也就是说runtime要去获取这个nil的信息,会去读取内存中0的位置,这肯定是不允许的,会返回nil,0,0.0等数据,根据返回值类型。

比较让你混淆的是,僵尸对象。僵尸对象并不是nil,僵尸对象是你的object被销毁或者用于其他地方了,但是指向它的指针还在。会发生向一个object发送一个它没有的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在 Objective-C 中向 nil 发送消息是完全有效的——只是在运行时不会有任何作用: 如果一个方法返回值...
    你好8828阅读 1,075评论 0 0
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,767评论 0 9
  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,603评论 33 466
  • 今天继续分享【得到】App上的语音——“怎样才能让别人好好听你说话”。 《小胖菌说图》 文章主题讨论的是如何提高沟...
    注册营养师阿娟阅读 1,411评论 4 8
  • 全球视野-宇宙视野 如果现在有哪些人的人生规划与创作发展,是以“宇宙视野”在思考,加上有主导技术亦步亦趋的执行力,...
    z琴ying阅读 306评论 0 0