Date
Jul. 27th, 2024
 
2024年 6月 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
I'm looking for a SOFTWARE PROJECT DIRECTOR / SOFTWARE R&D DIRECTOR position in a fresh and dynamic company. I would like to gain the right experience and extend my skills while working in great teams and big projects.
Feel free to contact me.
For more information, please view online résumé or download PDF
本人正在寻求任职 软件项目经理 / 软件技术经理 岗位的机会, 希望加⼊某个新鲜⽽充满活⼒的公司。
如有意向请随时 与我联系
更多信息请 查阅在线简历下载 PDF