博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】关于nil的几点认识,居然都现在才发现~~
阅读量:6712 次
发布时间:2019-06-25

本文共 1096 字,大约阅读时间需要 3 分钟。

接上一篇随笔的内容,“==”是比较两个对象内存地址是否相等,“isEqual:”则是比较对象的内容是否相等。

所以现在看几个sample:

NSArray * array = [NSArray array];    if (array !=  nil) {        NSLog(@"array is not nil!~~");    }//not nil        NSArray *array2 = [NSArray array];    if ([array2 isEqual:nil] == NO) {        NSLog(@"array2 is not nil!~~");    }//not nil        NSArray * array3 = [[NSArray alloc] init];    if (array3 != nil) {        NSLog(@"array is not nil!~~");    }//not nil    [array3 release];        NSString *str;    if (str != nil) {        NSLog( @"str is not nil!~");    }        NSString *str2;    if ([str2 isEqual:nil] ==  no) {        NSLog(@"str2 is not nil!~");    }

上面的例子所有的结果都是“is not nil”。我的分析是,array == nil判断的是array的地址是否为空,也就是系统有没有分配给array内存。显然,已经经过[NSArray array]或者[[NSArray] array]了,自然就有了内存地址。如果怀疑array对象与普通的string对象可能会有区别,那就看最后两个例子。str以及str2都没有显式地分配内存,但是地址依旧不为空。

所以,我们得出一个结论,以后想判断一个对象是否为空一定要谨慎,不能简简单单地“*** !=  nil“就搞定了。比如,若想判断array等是否含有内容,就应该用,if([array count] != 0)而不是用 if(array != nil)或者if([array isEqual:nil])来判断。

本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2012/04/10/2440190.html,如需转载请自行联系原作者

你可能感兴趣的文章
PostgreSQL技术周刊第6期:PostgreSQL 11 新特性解读
查看>>
使用git迁移git项目并保留提交记录
查看>>
关于ListBox在Grid中无法充满的问题
查看>>
jQuery系列 第四章 jQuery框架的选择器
查看>>
apt
查看>>
Android Dagger2依赖注入
查看>>
FullPage.js全屏插件文档及使用方法
查看>>
修改chrome插件
查看>>
Spring Boot(06)——参数配置机制
查看>>
【WPF】右下角弹出自定义通知样式(Notification)——简单教程
查看>>
keras 使用笔记
查看>>
Android中主要类的继承关系梳理汇总
查看>>
webApp爬坑之路(1)
查看>>
分享代码片段:web集群全局唯一request id生成算法, 替代uuid等“通用”方案
查看>>
[Arm] ARM汇编语言调用C函数之参数传递(转)
查看>>
SpringMVC源码分析迷你书
查看>>
PaddlePaddle 1.3.2 发布,百度开源的深度学习框架
查看>>
Python发送邮件模块之——yagmail模块
查看>>
Android 分享微信小程序失败二三事
查看>>
SpringBoot通过jar包启动时MyBatis无法定位实体类
查看>>