【Effective Objective-C 2.0】熟悉Objective-C

《Effective Objective-C 2.0》读书笔记

1.Objective-C 语言起源

Objective-C 由 Smalltalk 演化而来。使用“消息结构”,其运行时所应执行的代码由运行环境决定。

Objective-C 的重要工作都由“运行期组件”而非编译器完成。使用 Objective-C 的面向对象特性所需要的全部数据结构和函数都在运行期组件中。运行期组件本质是一种与开发者所编写代码相链接的“动态库”,其代码能把开发者编写的所有程序粘合起来。这样只需要更新运行期组件,即可提高应用程序性能。

1
NSString *someString = @"The String";

上面的代码声明了一个名为someString的变量,类型是NSString。即此变量为指向NSString的指针。
所有的 Objective-C 对象都必须这样声明,因为*对象所占内存总是分配在“堆空间”,而不是在“栈”上

不能在栈中分配 Objective-C 对象。

分配在堆中的内存必须直接管理,分配在栈上的用于保存变量的内存则会在栈帧弹出时自动清理。

2.在类的头部尽量少引入其他头文件

除非确有必要,不要轻易引入头文件。

一般来说,应该在某个类的头文件中使用向前声明来提及别的类,并在实现文件中引入那些类的头文件。这样可以降低类之间的耦合。

无法使用向前声明的时候,尽量将“该类遵循的协议”的这条声明移至“class-continuation分类”中。如果不行的话,就把协议单独放在一个头文件中再将其引入。

3.多用字面量语法

使用字面量语法可以缩减代码长度,使其更为易读。

字面数值

1
2
3
4
5
6
7
8
9
// 非字面量
NSNumber *someNumber = [NSNumber numberWithInt:1];

// 字面量
NSNumber *someNumber = @1;
NSNumber *floarNumber = @3.5f;
NSNumber *doubleNumber = @3.1415926;
NSNumber *boolNumber = @YES;
NSNumber *charNumber = @'d';

字面量数组

1
2
3
4
5
6
7
8
9
10
11
// 非字面量
NSArray *cars = [NSArray arrayWithObjects:@"Audi", @"Bently", @"Benz", @"BMW", nil];

// 字面量
NSArray *cars = @[@"Audi", @"Bently", @"Benz", @"BMW"];

// 操作数组
NSString *car = [cars objectAtIndex:1];

// 取下标 subscripting
NSString *car = cars[1];

用字面量创建数组的时候,若数组元素对象里有nil,则会抛出异常,更为安全

字面量字典

大专栏
上一篇:iOS面试高薪,进阶 你会这些呢嘛?(持续更新中)


下一篇:手机看片网站-PHP