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对象发送消息(调用方法),不会报错崩溃掉。
目录
相关文章
|
5月前
Fatal error: Call to undefined function openssl_pkey_get_private()
Fatal error: Call to undefined function openssl_pkey_get_private()
35 0
|
数据库
GORM 执行结果判断问题(error nil问题)
GORM 执行结果判断问题(error nil问题)
176 0
GORM 执行结果判断问题(error nil问题)
如何判断NSMutableDictionary是否有某个key
如何判断NSMutableDictionary是否有某个key
62 0
|
资源调度 Android开发
Uncaught Error: null is not an object(evaluating 'RNFreshchatSdk.FilterType')
Uncaught Error: null is not an object(evaluating 'RNFreshchatSdk.FilterType')
207 0
Golang 中 nil==nil 是对是错?
Golang 中 nil==nil 是对是错?
54 0
|
C语言 iOS开发
iOS中nil 、NULL、 Nil 、NSNull,你真的了解吗?
今天突然间对nil和NULL产生了疑问,就在网上查了一下相关的问题,看完之后终于有了清晰的认识,跟我一样有疑问的童鞋们可以看看。
|
Web App开发 JavaScript 前端开发
为什么用 void 0 代替 undefined?
为什么用 void 0 代替 undefined?
407 0
为什么用 void 0 代替 undefined?
|
PHP
Fatal error: Call to undefined function openssl_sign() in
        说明:   php环境测试支付宝接口报错:Fatal error: Call to undefined function openssl_sign() in     解决方案:   1.打开php.ini文件找到extension=php_openssl.dll 把前面“;”分号去掉,选择保存然后重启Apache即可   2.如果使用的是phpstudy,可右键菜单->php扩展及设置->php扩展,在列表中勾选php_openssl即可。
834 0