Date
Dec. 22nd, 2024
 
2024年 11月 22日

Post: iOS : 为什么 BOOL 可以赋值为 nil

iOS : 为什么 BOOL 可以赋值为 nil

Published 12:09 Sep 21, 2015.

Created by @ezra. Categorized in #Programming, and tagged as #iOS.

Source format: Markdown

Table of Content

有些情况下可能你会发现 BOOL 类型可以赋值为 nil,但在我们的印象里,nil 是 OC 对象的字面空白值,那么为什么可以赋值给 BOOL 呢?

首先我们应该查阅苹果的官方文档,先来看看 BOOL 的定义:

typedef signed char BOOL;

我们知道 BOOL 有两个值,分别是 YESNO:

#define YES (BOOL)1
#define NO  (BOOL)0

可见, BOOL 事实上是有符号字符的别名,使用了 #define 分别定义了 1YES0NO

再看看 nil 是如何定义的:

#define nil __DARWIN_NULL

那么这个 __DARWIN_NULL 又是什么呢:

#define __DARWIN_NULL ((void *)0)

是不是明白了什么?

Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询