Objecitive-C中的nil

让人想犯罪 __ 提交于 2019-12-29 19:58:20

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

当我学习OC的时候,我总是忍不住在对比。Actionscript是如何实现,而oc又是如何实现。这不,碰到nil的时候我发现了很大的不同之处。做个笔记。

在as中,如果将一个对象置为null,相当于空指针,那么后续对该对象的操作会报错。而在编码中,我们常常会判断if(obj == nul )来判断该对象是否存在,存在的话才可以进行后续操作。

而在oc中,nil就相当于c、c++中的NULL指针,一般释放对象后将对象置为nil非常重要,这样可以防止引用非法指针导致程序崩溃掉。

[obj release];//此时obj的引用计数为0
[obj someMethod];//程序崩溃

[obj release];
obj = nil;
[obj someMethod];//obj此时为nil,但不会崩溃
在objective-c中我们只用nil来检查程序的逻辑,而不用于判断对象是否为空来避免崩溃。这与c++是不同。objective-c在运行时会自动处理向nil对象发送消息(调用方法),不会报错崩溃掉。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!