- typedef
signed char BOOL; -
- #define
YES (BOOL) 1 - #define
NO (BOOL) 0
举例:
BOOL
bool
同样需要注意的还有P16中举的例子,最好不要直接拿BOOL值跟YES进行对比,因为BOOL类型并非只有YES和NO两个值。
2.关于OC中的“虚函数”:
虚函数其实是C++中的概念,以实现类的多态性,而P53继承的工作机制这一节中提到的特性其实跟虚函数的机制很相似,可以说OC中所有类函数(方法)都是虚函数,在当前类中能找到实现方法的直接调用该方法,只有当找不到对应的方法的时候才会往上一层去寻找对应方法。当然也可以通过使用super来调用父类方法。
3,关于复合与继承:
P70底下有一段写的很好,继承并不是万能的,不要什么都第一时间想到继承,有时候复合更加适合。
4.NSString的初始化
NSString变量主要有下面3种常用的定义方式:
- //简单的定义
- NSString
*aString = @"NSString创建的对象"; -
- //不需要分配内存空间和初始化
- NSString
*tt = [NSString stringWithFormat:@"hello"]; -
- //需要分配内存空间和初始化,使用完后需要release
释放 - NSString
*pp = [[NSString alloc]initWithFormat:@"hello"];
前面两种都不需要手动释放内存,后面两种可能新手会混淆,第二种是类方法,第三种是实例方法,第二种可以看出是第三种加多一句autorelease,所以不需要手动release内存,而第三种则需要手动释放。
具体可以看:http://www.isaced.com/post-240.html
5,关于NSArray的初始化:
P116种提到两种初始化方法:
-
NSArray *array1 = [NSArray arrayWithObjects:@"1",@"2",@"3", nil]; - NSArray
*array2 = @[@"1",@"2",@"3"];
-
NSArray *array3 = [NSArray arrayWithObject:@"1"]; //单个元素,不常见 -
NSArray *array4 = [NSArray arrayWithArray:array2];
还要注意NSArray只能存储Objective-C对象,而不能存原始C语言的数据类型,如int,float等。