Table of Content
有些情况下可能你会发现 BOOL
类型可以赋值为 nil
,但在我们的印象里,nil
是 OC 对象的字面空白值,那么为什么可以赋值给 BOOL
呢?
首先我们应该查阅苹果的官方文档,先来看看 BOOL
的定义:
typedef signed char BOOL;
我们知道 BOOL
有两个值,分别是 YES
和 NO
:
#define YES (BOOL)1
#define NO (BOOL)0
可见, BOOL
事实上是有符号字符的别名,使用了 #define
分别定义了 1
为 YES
,0
为 NO
。
再看看 nil
是如何定义的:
#define nil __DARWIN_NULL
那么这个 __DARWIN_NULL
又是什么呢:
#define __DARWIN_NULL ((void *)0)
是不是明白了什么?