iOS 对 nil 发送消息
2017-08-09 本文已影响30人
学而不思则罔思而不学则殆
-
字符串为 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