iOS中nil 、NULL、 Nil 、NSNull
nil,定义一个空的实例,指向OC中对象的空指针。
示例代码:
NSString *someString = nil;
NSURL *someURL = nil;
id someObject = nil;
if (anotherObject == nil) // do something 用法讲解:
当对某个对象release 的同时最好把他们赋值为nil,这样可以确保安全性,如果不赋值nil,可能导致程序
崩溃.
NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil];
[array release];
if (array)
{
//仅仅对数组release,并没有赋值为nil,在程序某个地方如果继续对数组操作,程序直接崩溃
NSString * string = [array objectAtIndex:0];
NSLog(@"%@",string);
}
NULL,NULL可以用在C语言的各种指针上。
#define __DARWIN_NULL
#define__DARWIN_NULLConstants
示例代码:
int *pointerToInt = NULL;
char *pointerToChar = NULL;
struct TreeNode *rootNode = NULL; 用法讲解:
在Objective-C里,nil对象被设计来跟NULL空指针关联的。他们的区别就是nil是一个对象,而NULL只是一个
值。而且我们对于nil调用方法,不会产生crash或者抛出异常。
Nil,定义一个空的类
示例代码:
Class someClass = Nil;
Class anotherClass = [NSString class];
NSNull,NSNull是一个类,它定义了一个单例对象用于表示集合对象的空值
集合对象无法包含nil作为其具体值,如NSArray、NSSet和NSDictionary。相应地,nil值用一个特定的对象
NSNull来表示。NSNull提供了一个单一实例用于表示对象属性中的的nil值。默认的实现方法中,
dictionaryWithValuesForKeys:和setValuesForKeysWithDictionary:自动地将 NSNull和nil相互转换,因此您的对象不需要进行NSNull的测试操作。
转自:https://www.jianshu.com/p/6abd21fde286
iOS中nil 、NULL、 Nil 、NSNull的更多相关文章
- objective-C nil,Nil,NULL 和NSNull的小结
nil用来给对象赋值(Object-C的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Object-C中类是一个对象,是类的meta-class ...
- iOS - nil null Nil笔记
今天查看Nullability and Objective-C发现里面提到了nil和Null等关键字,做一下笔记. nil -> Null-Pointer to Objective-C O ...
- Objective-c nil, Nil, NULL和NSNull的区别
在OC中可能经常会遇到 nil,Nil,NULL和NSNull,下面分析一下之间的区别: Symbol Value Meaning NULL (void *)0 literal null value ...
- OC,nil,NULL,Nil,kCFNull
YYModel源码中有一句:kCFNull //解析model属性并附值 + (instancetype)yy_modelWithDictionary:(NSDictionary *)dictiona ...
- OC中Nil nil NULL 和 [NSNULL null]的区别
关于这个问题看过两三次了,但是每次过两个月脑袋里又会不清晰,索性记录一下加深一下印象. 一.nil 当一个对象置为nil时,这个对象的内存地址就会被系统收回.置空之后是不能进行retain,copy等 ...
- nil,Nil,NULL和NSNull的区别
- iOS中nil、Nil、NULL、NSNull详解(转)
ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interfa ...
- iOS中使用nil NULL NSNULL的区别
nil NULL NSNULL的区别主要以下几点 1.nil:一般赋值给空对象 2.NLL:一般赋值给nil之外的其他空值.入SEL等. 3.NSULL:NSNULL只有一种方法+ (NSNull * ...
- iOS 中nil,Nil,NULL,NSNull的区别
类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据 ...
随机推荐
- spring和hibernate整合,事务管理
一.spring和hibernate整合开发步骤 1 引入jar文件,用户libarary列表如下 //spring_core spring3..9core\commons-logging-1.2.j ...
- [elk]kibana搜索绘图
kibana绘图 好些日志入库了需要分析. 1,首先分析top10 url的table和柱状分布 2,其次想着分析下404所占比例,以及404所对应的url table. 3,最后分析一下请求总数. ...
- python之中国大学爬虫
#!/usr/bin/env python3 #-*- coding:utf-8 -*- ############################ #File Name: zuihaodaxuepai ...
- 通过show status 来优化MySQL数据库
1, 查看MySQL服务器配置信息 Java代码 mysql> show variables; 2, 查看MySQL服务器运行的各种状态值 Java代码 mysql> show ...
- wordpress之备份与恢复数据
备份:mysqldump -u root -p wordpress > "d:/wordpress.sql" 恢复:mysql -u root -p < "c ...
- ORACLE中关于 char 和 varchar2 的比较
先建表做一个测试: ) , VARC2 )), CHAR2 ) ; INSERT INTO TT VALUES('A','A','A') ; INSERT INTO TT VALUES('A','A ...
- mysql 求季度产量平均值
表名:product 表结构: 表数据: 如果使用日期查询的话:sql: SELECT QUARTER(create_time) AS '季度',AVG(seller) AS '平均值' FROM p ...
- 开源Bug管理系统Redmine安装和使用心得
最终忍受不了公司使用论坛+Excel来进行bug反馈和管理工作了,于是花了一个上午时间研究了下bug管理系统.这样一个bug管理系统能够轻松的查看bug新增了哪些,攻克了哪些.当前是谁,要在什么时间解 ...
- The Definitive Guide To Django 2 学习笔记(四) 动态URLs
前面的例子中,虽然时间是动态可变的,但它的URL却是静态的(/time/).很多时候,URL也是需要动态改变,然后展示出不通的内容来.现在我们就来创建一个可以动态改变URL的例子. 如果URLconf ...
- c++11线程池实现
咳咳.c++11 增加了线程库,从此告别了标准库不支持并发的历史. 然而 c++ 对于多线程的支持还是比較低级,略微高级一点的使用方法都须要自己去实现,譬如线程池.信号量等. 线程池(thread p ...