您的当前位置:首页正文

iOS 对 nil 发送消息

来源:花图问答
  • 字符串为 nil, 对其发送消息查看会发生什么事情


    对空对象发送消息
  • 比如 NSArray *array = nil; array.count == 0
    是对 nil 发送消息的结果
  • 其中, nil == 0 …. 不过 swift 就纠正了这个.
  • 对 nil 发送消息是安全的 … 如果这个消息有返回值, 返回值类型是 int 、float、char *、NSObject 及其子类 等, 返回的好像都是 0, 如果是结构体,那么结构体内的各个字段都为 0
    NSString *string = nil; ( nil == 0)
    int val = string.length;
    其实就是 int val = [nil length];
    对 nil 发送一个 length 消息, 返回 0
    所以就是 int val = 0;
    所以一定是 0
    到了这里
    string == nil == 0, val == 0
    

NULL 和 nil 区别和联系

  • nil: 指向oc中对象的空指针
  • NULL: 指向其他类型的空指针,如一个c类型的内存指针
    区别:
    都代表空, 做判断时都是NO 区别在于nil为NS的范畴, 当向nil发送消息时, 不做任何操作, 但是当向 nul l发送消息时(比如访问指针存在非法访问), 直接crash