OC基础复习02-BOOL

首先看下objc.h里面的定义

 1 /// Type to represent a boolean value.
 2 #if !defined(OBJC_HIDE_64) && TARGET_OS_IPHONE && __LP64__
 3 typedef bool BOOL;
 4 #else
 5 typedef signed char BOOL;
 6 // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
 7 // even if -funsigned-char is used.
 8 #endif
 9
10 #if __has_feature(objc_bool)
11 #define YES __objc_yes
12 #define NO  __objc_no
13 #else
14 #define YES ((BOOL)1)
15 #define NO  ((BOOL)0)
16 #endif

从上面的定义我们发现布尔变量的值为 YES/NO,或 1/0 。YES 或 1 代表真,NO 或 0 代表假。比如你定义了一个布尔变量并赋了值

因此我们可以定义 BOOL b1 = YES;  BOOL b2 = NO; 或者定义BOOL b3 = 1; BOOL b4 = 0;

时间: 2024-11-10 13:54:23

OC基础复习02-BOOL的相关文章

oc基础复习01-第一个OC程序

近期简单复习下OC打开iTerm工具 输入命令 mkdir reviewoc 打开Sublime Text文件 open -a Sublime\ Text 写入如下代码: 1 #include <stdio.h> 2 //main所有程序的入口 哈哈 这里就不说了 3 int main() 4 { 5 printf("Hello OC \n"); 6 } 保存为review01.m 编译文件 在reviewoc目录 cc -c review01.m 文件没有错误 直接会产生

OC基础复习(六)之构造方法小结

写到这里心慌慌的,压力骤然而起, 1.什么是构造方法? OC构造方法 构造方法我们创建一个对象的时候一般喜欢直接调用一个类方法,比如有一个Person类,我们为这个Person类创建对象一般是直接这样[Person new];其实new是NSObject中的一个类方法,这个new方法中是先调用了alloc方法,alloc方法也是一个类方法,作用是创建这个类的对象,再将这个对象的指针返回:再调用创建的对象的对象方法init,作用是初始化创建的对象的属性,然后返回这个已经被初始化的对象.比如: Pe

OC基础复习(三)之类方法和对象方法的理解

面向对象的难易点:其实也就是封装:要会调封装,也要会自己封装,封装就是给出一些接口,让我们去用,我们不关心其实现,但往往学的时候不踏实 说他容易是用着容易,只要有接口,就可以完成很多我们想要的功能,但往往分不清功能是自己能实现还是通过别人写好的框架或者方法来帮我实现 所以需要记忆一些常用方法和框架.把自己的算法思想和一些接口框架相结合. OC 有两种类型的方法,类方法和对象方法(也被称为实例方法) 1.类方法:以+开头,不分配内存空间(这句话,问题来了,为什么?) 什么时候分配内存空间,很显然只

2014.12.10 OC基础复习

oc是一种没有垃圾回收机制的语言,再没有打开arc的情况下,需要手动管理内存 @为关键字的开头,也是字符串的开头 @interface --@end 写对类的声明,包括对成员变量和方法的声明,@implementaion --@end之间写对类的方法实现,方法形如- (void)setAge:int; +号表示静态方法,-号表示动态方法 对象的声明初始化都是Student *st = [[Student alloc]init]; st指针就表示该对象 st.age不是访问成员变量,而是根据情况调

2014.12.11 oc基础复习

这一天主要学习了内存管理的部分,感觉稍显复杂,但只要遵循总的原则就不会错 谁声明,谁销毁,谁retain,谁release 1.在类的成员变量是oc对象时,set方法需要写内存管理如 -(void)setBook:(Book *)book{ if( _book != book){ [_book release]; _book = [book retain]; } } 还要在调用这个set方法的类的dealloc方法中,加入[_book release] 在声明该对象成员变量的属性时,加入reta

oc基础复习05-OC的属性 和 点语法(转)

这篇文章大部分都是转载网络上的 里面有部分我更改的内容 一.设置器setter 访问器getter setter: set+首字母大写的实例变量名 如:- (void)setNickName:(NSString *) name;//参数名不要与实例变量名相同 getter: 与实例变量名相同(没有短横线),并且返回值类型也一致 例: @interface Cup:NSObject { float _price; } - (void)setPrice:(float)price; - (float)

oc基础复习03-OC的类

首先要想想面向对象和面向过程 在编程语言中 C是面向过程的 OC是面向对象的(一定要有一切即对象的思想)java也是对象对象的 js lua php是解释性语言(脚本) 不过现在好多都是模拟面向对象思想 也很不错. 在OC语言中 1.类的声明 @inteferface 类名:父类 { //这里声明类的属性 } //函数的声明 @end 2.类的实现 @implementation 类名 //函数的实现 @end 现在我们来些一个实例  写一个动物类 Animal 属性weight, sex;方法

.Net学习笔记----2015-07-16(C#基础复习02)

继承的复习 有效解决代码冗余,实现多态:增加代码的可扩展性,便于维护 1.单根性 2.传递性 子类并没有继承父类的构造函数,而是默认调用父类那个无参的构造函数 class Program { static void Main(string[] args) { } } public class Person { //public Person() //{ } public Person(string name, int age, char gender) { } public string Nam

OC基础复习(二)之对象的存储细节

1.内存分为5大区:栈区,堆区,Bss段,数据区,代码区(排序方式:由高地址-->低地址) 其中注意:栈区对象的地址分配是先分配高地址,再分配低地址,(通俗讲就是在栈区中存的变量,先从地址高的开始往下存) 堆区是从低地址开始分配,再分配到高地址  如下图; 栈区:存储局部变量 堆区:存储程序运行的过程中动态分配的内存空间(通俗的理解就是实例对象,例如:Person *p = [Person new],这块内存空间就是指针变量p指向的这个空间) Bss段:存储未初始化的全局变量和静态变量 数据区: