iOS - OC NSNull 空值
前言
@interface NSNull : NSObject <NSCopying, NSSecureCoding>
作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间。
NULL & nil 的区别:
nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NULL。
在 OC 中,可以给空对象(nil)发送任何消息,不会出现错误。
NULL 是 C 的,空地址,地址的数值是 0,是一个长整数。
表示地址是空,不能给 NULL 消息。
从 Xcode 6 开始,取消了 NULL 的智能提示,因为 Swift 中没有 NULL 的概念,只有 nil。
在 OC 中,使用 NULL 或者 nil 都不会出错,但是:从概念的角度而言,** 的参数,不想获取对应的内容,应该传入 NULL 。
[NSNull null] 就是为了向数组和字典添加空值使用的。
** 类型:
指针的指针,是一个很古老的 C 语言的技巧。
用处:一个方法,可以返回多个数值。
返回值,用户代号,同时还希望返回用户年龄,按照以往的套路,会新建一个 person 类。
1、NSNull 的创建
// 返回一个单例类对象
NSNull *nl = [NSNull null];
2、** 类型
- (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;
}
iOS - OC NSNull 空值的更多相关文章
- iOS - Swift NSNull 空值
前言 public class NSNull : NSObject, NSCopying, NSSecureCoding 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间. 1.NS ...
- iOS - OC 面向对象语法
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...
- ios+oc面试题
ios+oc面试题 浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...
- iOS OC语言原生开发的IM模块--RChat
iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...
- iOS - OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...
- iOS - OC Foundation 框架
前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...
- NSNull空值
1.前言 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间. 1.1 NULL & nil 的区别: nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NUL ...
- iOS - OC RunTime 运行时
1.运行时的使用 向分类中添加属性 // 包含运行时头文件 #import <objc/runtime.h> /* void objc_setAssociatedObject(id obj ...
- iOS - OC Category 分类
1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...
随机推荐
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.10.SportsStore:上传图片
1 扩展数据库 打开表定义,新增两列可空 ) 2 增强领域模型 为Products类添加如下属性 publicstring ImageMimeType { get; set; } 第一个属性不会在界面 ...
- ecshop微信支付(0923更新)商户支付密钥key的生成与设置
ECSHOP 微信支付(0923更新)商户支付密钥key的生成与设置 说明:新版微信支付,用户必须授权登录才能支付.需要商家自己设置商户号支付密钥. 申请微信支付手机版部分时需要填写的配置接口地址: ...
- 浅谈mysql mvcc
以下为个人理解,如有错误,还望指正!! mysql的大多数事务型存储引擎实现的都不是简单的行级锁,基于提升并发性能的考虑,他们一般都同时实现了多版本并发控制,可以认为MVCC是行级锁的一个变种,但是它 ...
- Piggy-Bank
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- python中string.casefold和string.lower区别
string.casefold和string.lower 区别 python 3.3 引入了string.casefold 方法,其效果和 string.lower 非常类似,都可以把字符串变成小写, ...
- 转载-python学习笔记之输入输出功能读取和写入数据
读取.写入和 Python 在 “探索 Python” 系列以前的文章中,学习了基本的 Python 数据类型和一些容器数据类型,例如tuple.string 和 list.其他文章讨论了 Pytho ...
- sql中decode(...)函数的用法
相当于if语句 decode函数比较1个参数时 SELECT ID,DECODE(inParam,'beComparedParam','值1' ,'值2') name FROM bank #如果第一个 ...
- java配置自动任务,定期执行代码
任务调用类: package business.tools.service; import java.util.ArrayList; import java.util.Calendar; import ...
- redis pool
Redis Pool--Java 配置文件 #redis conf ADDR=127.0.0.1 PORT= AUTH= #session timeout TIMEOUT= MAX_ACTIVE= M ...
- Android 4.4之后删除短信进行处理
android 4.4删除短信 android 4.4之后非默认的短信应用已经没有办法删除短信了.像以前那样用如下方法是不会没法删除短信的(即使在xml中配置了短信的读写权限),同时也不会有报错或其他 ...