第1章 熟悉Object-C
第1条:了解Object-C语言的起源
1.面向对象语言
2."消息结构"而非“函数调用”
3.使用消息结构的语言,其运行时所应执行的代码由运行环境决定;
使用函数调用的语言,其运行时所应执行的代码由编译器决定。
4.针对多态来说,函数调用语言需要查虚函数表确定执行哪个函数;
消息调用语言在运行时才去查需要执行的方法,编译器甚至不关系接收消息的对象是何种类型,该过程被称为“动态绑定”。
5.“运行期组件”
第二条 在类的头文件尽量少引用其他头文件
除非有必要,否则不要引进头文件。在头文件中用的类使用向前声明;
无法使用向前声明的时候,尽量把该类单独放在一个头文件中。
第三条 多用字面量语法、少用与之等价的方法
从Object-C 1.0起,可以使用“字面量”,缩短代码长度,更加易读。
字面量字符串
NSString* string = @“Effective Object-C”;
字面量数值
NSNumber* intNum = @1;
int x = 5;
float y = 6.25f;
NSNumber* expressionNumber = @(x*y);
字面量数组
NSArray *animals = @[@"cat",@"dog",@"mouse",@"badger"];
下标访问或者objectAtIndex都可以
字面量字典
NSDictionary* personData = @{@“firstName”:@“Matt”,@"lastName":@"Galloway",@"age":@28};
访问方式:
NSString* lastName = [personData objectForkey:@"lastName"];
字面量语法:
NSSting* lastName = personData[@"lastName"];
局限性
字面量语法,除了字符串以外,所创建出来的对象必须属于Foundation框架才行。这些类的自定义子类,则无法用字面量语法创建其对象。
使用字面量语法创建出来的字符串、数组、字典对象都是不可变的。若想要可变版本的对象,则需要复制一份:NSMutableArray* mutable = [@[@1,@3,@,2,@4] mutableCopy];会多调用一个方法,再创建一个对象,不过使用字面量语法好处还是多余缺点。
要点:
1.应该使用字面量语法来创建字符串、数值、数组、字典。与创建此类兑现的常规方法相比,这么做更加简明扼要。
2.应该通过取下标操作来访问数组下标或字典中的键所对应的元素。
3.用字米娜了语法创建字典和数组时,若值中有nil,则会抛出异常。因此,务必保证值里不含nil.