NSNull空值
1、前言
- 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间。
1.1 NULL & nil 的区别:
- nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NULL。
- 在 OC 中,可以给空对象(nil)发送任何消息,不会出现错误。
- NULL 是 C 的,空地址,地址的数值是 0,是一个长整数。
- 表示地址是空,不能给 NULL 消息。
- 从 Xcode 6 开始,取消了 NULL 的智能提示,因为 Swift 中没有 NULL 的概念,只有 nil。
- 在 OC 中,使用 NULL 或者 nil 都不会出错,但是:从概念的角度而言,** 的参数,不想获取对应的内容,应该传入 NULL 。
- [NSNull null] 就是为了向数组和字典添加空值使用的。
- nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NULL。
1.2 ** 类型:
- 指针的指针,是一个很古老的 C 语言的技巧。
- 用处:一个方法,可以返回多个数值。
- 返回值,用户代号,同时还希望返回用户年龄,按照以往的套路,会新建一个 person 类。
2、NSNull 的创建
// 返回一个单例类对象
NSNull *nl = [NSNull null];
3、** 类型
- (void)demo {
int age = 0;
NSString *myTitle = nil;
[self userInfo:&age title:&myTitle];
NSLog(@"%d %@", age, myTitle);
}
- (int)userInfo:(int *)age title:(NSString **)title {
*age = 10;
*title = [NSString stringWithFormat:@"BOSS - %d", 123];
return 1;
}
NSNull空值的更多相关文章
- iOS - OC NSNull 空值
前言 @interface NSNull : NSObject <NSCopying, NSSecureCoding> 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间. ...
- iOS - Swift NSNull 空值
前言 public class NSNull : NSObject, NSCopying, NSSecureCoding 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间. 1.NS ...
- iOS开发系统类功能划分
0.OC语法基础 CHOCBase Object C语法学习笔记(一) Object C语法学习笔记(二) 1.UI类 自定义控件程序运行流程 setNeedsLayOut和setNeedsDispl ...
- CHNS类
NS类集合介绍 1.常用部分 NSDictionary NSString NSArray 数组 NSTimer 定时器 NSRange 范围 NSNotification 2.网络相关 NSURLCo ...
- nil、Nil、NULL、NSNull的区别
nil:指向一个对象的空指针,对objective c id 对象赋空值. Nil:指向一个类的空指针,表示对类进行赋空值. NULL:指向其他类型(如:基本类型.C类型)的空指针, 用于对非对象指针 ...
- Objective-C数据类型之id,SEL,BOOL,nil,NULL和NSNull
id id是指向Objective-C对象的指针,等价于C语言中的void*,可以映射任何对象指针指向他,或者映射它指向其他的对象.常见的id类型就是类的delegate属性. SEL SEL类型是 ...
- 黑马程序员-nil Nil NULL NSNull 野指针和空指针
空指针1.空指针指不含有任何内存地址的指针.在没有具体初始化之前,其被符值为0Dog * dog = nil;Dog * dog = NULL;都为空指针2.野指针指指向的内存为垃圾内存,导致其值不确 ...
- iOS 杂笔-23(区分各种空值)
iOS 杂笔-23(区分各种空值) nil是一个对象指针为空 Nil是一个类指针为空 NULL是基本数据类型为空 NSNull空对象(是可以放在数组里的)
- iOS的nil,Null,NSNull的使用
今天做项目时,在数组里面取值时,发现里面有NSNull的对象,然后用数组里面对应的对象赋值时出现各种问题,总是报错.后面经过研究和查资料,总算解决了这一问题. nil用来给对象赋值(Objective ...
随机推荐
- Linux驱动中获取系统时间
最近在做VoIP方面的驱动,总共有16个FXS口和FXO口依次初始化,耗用的时间较多.准备将其改为多线程,首先需要确定哪个环节消耗的时间多,这就需要获取系统时间. #include <linux ...
- Day2-VIM(三):删除
字符删除 x 删除光标所在处字符 X 删除光标所在前字符 这里没有什么可注意的地方,但需要说明一下的是 通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的 如果是头几天使用还好说,但 ...
- c++ 插入排序算法
第一.算法描述 直插排序很容易理解,在我们打扑克牌的时候,每一次摸完牌,都会按数字大小或者花色,插入到合适的位置,直到摸完最后一张牌,我们手中的牌已经按大小顺序排列好了.这整个过程就是一个 ...
- JavaScript实现重置表单(reset)的方法
转自:https://www.jb51.net/article/63305.htm <!DOCTYPE html> <html> <head> <script ...
- 监控和安全运维 1.5 nagios监控客户端-1
3. Nagios安装 - 客户端(192.168.0.12)在客户端机器上 rpm -ivh http://www.aminglinux.com/bbs/data/attachment/forum/ ...
- LNMP 1.5 php-fpm配置文件
php-fpm配置文件: /usr/local/php/etc/php-fpm.conf :php-fpm服务的配置文件 /usr/local/php/etc/php.ini :ph ...
- linux dev/dsp 声卡学习笔记
原文地址:dev/dsp 声卡学习笔记">linux dev/dsp 声卡学习笔记作者:ziyou飞翔 无论是从声卡读取数据,或是向声卡写入数据,事实上都具有特定的格式(f ...
- WKWebView的15条应用指南
1.让一个web view充满屏幕 有时候你会看到有人向viewDidLoad()中添加代码,创建一个web view并让它充满整个可用区域.但这样效率很低,用起来很麻烦. 一个简单的方法是在你的视图 ...
- ubuntu16搭建docker私库
测试环境如下: 一.docker的安装 安装方法请查看这里的 安装教程 二.设置普通用户 1. centos的设置方法 $ sudo gpasswd -a docker ${USER} 2. ubun ...
- java虚拟机垃圾回收机制详解
首先,看一下java虚拟机运行的时候内存分配图: jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁.这里面主要保存线程本地变量名和局部变量值. 本地方 ...