NSNull 空值

前言

  • NSNull 空值

    • Objective-C

      1
      @interface NSNull : NSObject <NSCopying, NSSecureCoding>
    • Swift

      1
      public class 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 的创建

  • Objective-C

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

    1
    2
    // 返回一个单例类对象
    let nl: NSNull = NSNull()

2、** 类型

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    - (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;
    }
文章目录
  1. 1. 前言
  2. 2. 1、NSNull 的创建
  3. 3. 2、** 类型
隐藏目录