学过许多的编程语言,无一例外都拥有Boolean类型,而objective C也不例外。
C语言中拥有布尔数据类型bool,它具有true值和false值。Objective C提供相似的类型Bool,它具有YES值和NO值。比较有趣的事情就是, Objective C的布尔类型比C语言的布尔类型早诞生10多年。这两种不同的布尔类型可以共同一个程序中共存,但在编写Cocoa代码时要使用Bool。
要注意的地方是:Objective C中的BOOL实际上是一种对带符号的字符串(singed char)类型的定义(typedef),它使用8位存储空间。YES定义为1,而NO定义为0(使用#define)。
由于Objective C并不将Bool作为仅能保存YES or NO值得真正的布尔类型来处理。编译器将BOOL认做8为二进制数,YES 和 NO值只是一种约定。这会引发一个小问题,不过不小心把一个长于1字节的整形复制给BOOL变量,那么只有低位作BOOL值。
来吧,接着来点干货,关于BOOL的使用功能例子;
#import <Foundation/Foundation.h> BOOL areIntDifferent(int thing1, int thing2){ if( thing1 == thing2){ return (NO); }else{ return (YES); } } NSSTRING *boolString(BOOL yesNo){ if(yesNo == NO){ return (@"NO"); }else{ return (@"YES"); } } int main(int argc, const char *argv[]){ BOOL areTheyDifferent; areTheyDifferent = areIntDifferent(5, 5); NSLog(@"are %d and %d different? %@", 5 , 5, boolString(areTheyDifferent); areTheyDifferent = areIntDifferent(23, 42); NSLog(@"are %d and %d different? %@", 23, 42, boolString(areTheyDifferent)); return (0); }
运行结果:
are 5 and 5 different ? NO are 23 and 24 different ? YES
需要注意的地方:
作为一个丰富经验的C语言开发者来说,往往将areIntsDifferent()函数简写为:
BOOL areIntDifferent(int thing1, int thing2){ return (thing1 - thing2); }
在C语言中非0的值都返回YES,但objective C中1是不等于YES的
还有一个问题%d我们固然比较熟悉,但“%@"它的含义是什么,它表示boolString()返回一个NSString的指针。
相关推荐
2.3 布尔类型10 2.3.1 BOOL强大的实用功能11 2.3.2 比较13 2.4 小结14 第3章 面向对象编程基础知识15 3.1 间接15 3.1.1 变量与间接16 3.1.2 使用文件名的间接18 3.2 在面向对象的编程中使用间接24 3.2.1 ...
3. Objective-C中的布尔类型 4. Objective-C中的null 5. 与C混合编写 6. 对象的初始化 7. Objective-C的description方法 8. Objective-C的异常处理 9. id类型 10. 类的继承 11. 动态判定与选择器 12. 类别Category ...
2.3 布尔类型10 2.3.1 BOOL强大的实用功能11 2.3.2 比较13 2.4 小结14 第3章 面向对象编程基础知识15 3.1 间接15 3.1.1 变量与间接16 3.1.2 使用文件名的间接18 3.2 在面向对象的编程中使用间接24 3.2.1 过程式编程...
Objective-C 编程语言 Cocoa 基本原理指南 Cocoa 编码指南 iOS 应用编程指南 目录 点语法 间距 条件判断 三目运算符 错误处理 方法 变量 命名 注释 Init 和 Dealloc 字面量 CGRect 函数 常量 枚举类型 位掩码 私有...
5.4 布尔类型 35 5.5 整型修饰符(short, long, signed, unsigned) 36 5.6 特殊类型(id) 36 第6章 Objective-C中的运算符 38 6.1 赋值运算 38 6.2 算术运算 39 6.3 自增自减 40 6.4 关系运算 41 6.5 逻辑运算 42 ...
Swift是静态类型的,而Objective-C是动态类型的。 Swift中的变量和常量有什么区别? 变量用var声明,其值可以改变;常量用let声明,其值一旦确定后不可更改。 Swift中的数据类型有哪些? Swift支持多种...
Objective-C Style Guide 这篇风格指南概括了「纽约时代周刊」工作的 iOS 团队的编码约定。我们非常欢迎在 和 上给我们反馈。 介绍 这里是一些来自 Apple 的风格指南文档。如果某些没有在本文提及,那在下面这些文档...
网上有许多 Objective-C 的代码风格,但这份简洁而又最符合苹果的规范,同时有助于养成良好的代码习惯,也是我们团队一直遵循的代码风格。 原文在。 本人才疏学浅,如果有任何翻译不当欢迎在 中反馈或者直接 。 纽约...
iOS-UITextField UITextField 的子类,具有一些有用的功能如何使用特性名称类型描述最长长度整数设置允许的最大长度(不使用默认零) 辞职KeyboardOnReturn 布尔值如果为 true,则在返回键时退出键盘(默认为 true)...
配置类型描述requireExpiry 布尔型不需要过期信息。 requireCVV 布尔型将提示用户输入卡CVV requirePostalCode 布尔型将提示用户输入卡帐单邮递区号。 抑制手动布尔型从扫描屏幕上删除键盘按钮。 ...
包中原语的包装器,使用Foundation类型。 AtomicBoolean : BOOL标志的原子包装器 AtomicInteger :带有附加计数器语义( add-and-get 、 get-and-add )的NSInteger原子包装器(32 位或 64 位,取决于它编译的体系...
如果您希望窗口在另一个应用程序处于全屏模式时可用,请在应用程序的Info.plist文件中为布尔类型的LSUIElement创建一个新条目并将其值设置为YES 。 这样做的副作用是应用程序的停靠栏图标将被隐藏。 ...
Macoscope Objective-C 风格指南该样式指南描述了在此处遵循的一组基本规则。 我们每天都在努力编写更好的代码,我们相信本文档概述了有助于您做到这一点的最佳实践。 本文档基于 ,并受到其启发。 此外,.必读如果...
默认情况下,Bohr支持多种设置类型,例如字符串,布尔值或时间。 但是,此框架在构建时考虑了可扩展性,这意味着您可以构建自己的自定义类以支持所需的任何类型的设置类型。为什么是“玻尔”? “玻尔”来自原子...
列名 | 类型 图像 | 文件(要显示的广告图像)链接 | 字符串(用户点击时需要导航到的网址,例如:http: ) active | 布尔值(如果您想显示该广告,则为真,否则为假)| displayImage | 文件(用户单击底部图
已开始布尔值如果幻灯片正在工作,则返回 YES,否则返回 NO方法姓名 | 类型 | 说明-------------- | ----------------|--------------------------------- ---------------------------------- 开始 | 无效 | 它允许...