前言

  1. @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 的创建

  1. // 返回一个单例类对象
  2. NSNull *nl = [NSNull null];

2、** 类型

  1. - (void)demo {
  2. int age = 0;
  3. NSString *myTitle = nil;
  4. [self userInfo:&age title:&myTitle];
  5. NSLog(@"%d %@", age, myTitle);
  6. }
  7. - (int)userInfo:(int *)age title:(NSString **)title {
  8. *age = 10;
  9. *title = [NSString stringWithFormat:@"BOSS - %d", 123];
  10. return 1;
  11. }

iOS - OC NSNull 空值的更多相关文章

  1. iOS - Swift NSNull 空值

    前言 public class NSNull : NSObject, NSCopying, NSSecureCoding 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间. 1.NS ...

  2. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  3. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  4. iOS OC语言原生开发的IM模块--RChat

    iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...

  5. iOS - OC 语言新特性

    前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...

  6. iOS - OC Foundation 框架

    前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...

  7. NSNull空值

    1.前言 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间. 1.1 NULL & nil 的区别: nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NUL ...

  8. iOS - OC RunTime 运行时

    1.运行时的使用 向分类中添加属性 // 包含运行时头文件 #import <objc/runtime.h> /* void objc_setAssociatedObject(id obj ...

  9. iOS - OC Category 分类

    1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...

随机推荐

  1. 日常css和js小知识点记录

    2015-6-29 1.<meta name="viewport" content="width=device-width,user-scalable=no&quo ...

  2. HDU 2846:Repository(Trie)

    http://acm.hdu.edu.cn/showproblem.php?pid=2846 题意:给出N个模式串,再给出M个文本串,问每一个文本串在多少个模式串中出现. 思路:平时都是找前缀的,这里 ...

  3. 阿里云ECS主机多个网站配置,是有先后顺序的

    注意:阿里云ECS主机多个网站配置,是有先后顺序的: 进入路径:/alidata/server/httpd-2.4.2/conf/vhosts/  注意这个2.4.2是自己的版本不一样,但是找到 se ...

  4. 【转】cvs2svn 把CVS档案库转换为SVN档案库

    转载地址:http://jackdown.blog.sohu.com/66646130.html 在linux下的操作 1).安装 下载:Python 2.0   地址:http://www.pyth ...

  5. MultiSelectComboBox(一)

    1. MultiSelectComboBox.xaml <UserControl x:Class="MultiSelectComboBox.MultiSelectComboBox&qu ...

  6. 【20160924】GOCVHelper MFC增强算法(2)

    //创建或续写目录下的csv文件,填写“文件位置-分类”对     int writeCsv(const string& filename,const Vector<pair<st ...

  7. linux系统缓存机制

    http://my.oschina.net/lenglingx/blog/425258 1.缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读 ...

  8. JAVA基础知识之网络编程——-基于UDP协议的通信例子

    UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramS ...

  9. ExecutorService线程池讲解

    ExecutorService 建立多线程的步骤: 1.定义线程类 class Handler implements Runnable{ } 2.建立ExecutorService线程池 Execut ...

  10. ZOJ 3593 One Person Game

    One Person Game Time Limit: 2 Seconds      Memory Limit: 65536 KB There is an interesting and simple ...