Objecitive-C中的nil

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

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

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

1 [obj release];//此时obj的引用计数为0
2 [obj someMethod];//程序崩溃
3  
4 [obj release];
5 obj = nil;
6 [obj someMethod];//obj此时为nil,但不会崩溃
在objective-c中我们只用nil来检查程序的逻辑,而不用于判断对象是否为空来避免崩溃。这与c++是不同。objective-c在运行时会自动处理向nil对象发送消息(调用方法),不会报错崩溃掉。
目录
相关文章
|
1月前
|
并行计算 TensorFlow 算法框架/工具
【Deepin 20系统】解决Check failed: err == cudaSuccess || err == cudaErrorInvalidValue Unexpected CUDA erro
本文介绍了在使用Nvidia RTX 2070 GPU和TensorFlow 2时,解决GPU内存不足错误的方法,包括杀死占用内存的进程、重置GPU以及重启设备等方案。
43 3
|
1月前
|
Go
优雅判断 interface 是否为 nil
优雅判断 interface 是否为 nil
|
3月前
npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolvenpm ERR!-解决
npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolvenpm ERR!-解决
|
4月前
|
域名解析 缓存 网络协议
关于错误ERR_NAME_NOT_RESOLVED
如果以上方法都未能解决问题,你可能需要联系你的网络管理员或互联网服务提供商以获取更多帮助,或者考虑尝试在不同的网络环境中访问网站。
427 0
|
数据库
GORM 执行结果判断问题(error nil问题)
GORM 执行结果判断问题(error nil问题)
252 0
GORM 执行结果判断问题(error nil问题)
unknown type name err_status_t; did you mean srtp_err_status_t/err_status_ok/err_status_replay_fail
unknown type name err_status_t; did you mean srtp_err_status_t/err_status_ok/err_status_replay_fail
152 0
Golang 中 nil==nil 是对是错?
Golang 中 nil==nil 是对是错?
72 0
|
C语言 iOS开发
iOS中nil 、NULL、 Nil 、NSNull,你真的了解吗?
今天突然间对nil和NULL产生了疑问,就在网上查了一下相关的问题,看完之后终于有了清晰的认识,跟我一样有疑问的童鞋们可以看看。