(高质量代码专栏)第一章

来源:互联网 发布:mysql队列 编辑:程序博客网 时间:2024/05/20 10:21

第一条:了解Object-c语言的起源

Object-c同属于面向对象语言,但却有点特别,该语言使用"消息结构"而非"函数调用"

Object-c语法由Smalltalk演化而来,而Smalltalk是消息型语言的鼻祖

1.消息型语言和函数型语言区别:

使用消息结构的语言,其运行时所应执行的代码由环境来决定;而使用函数调用的语句,则由编译器决定

如果范例代码中调用的函数是多态的,那么在运行时就要按照"虚方法表"来查出到底应该执行那个函数实现。

而采用消息结构的语言,无论是否多态,总是在运行时才会去查找所要执行的方法(实际上编译器甚至不关心接收消息的对象是何种类型,接收消息的对象有问题也要在运行时处理,所以这过程叫"动态绑定")

2.Object-c特点:

OC的重要工作都是由"运行期组件"而非编译器来完成。使用OC的面向对象特征所需的全部数据结构及函数都在运行期组件里面。举个例子,运行期组件中含有全部内存管理代方法。运行期组件本质就是一种与开发者所编写代码相链接的“动态库”,其代码能把开发者编写的所有程序沾合起来,这样的话,只需要更新运行器组件,即可提升应用程序性能。

而许多工作都在"编译器"完成的语言。若想获得这等性能提升,则要重新编译应用程序代码。

OC的对象都是分配再堆上,而不是栈上

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

再OC代码中,有时会遇到定义里不含*的变量,它们可能会使用“栈”空间。这些边两所保存的不是OC对象。比如coreGraphics框架中的VGrect

第二条:在类的头文件中尽量少引入其他头文件

代替方法使用

类的头文件中使用如下的方式避免引入头文件,同时又能满足你的需要

@class xxxx类

好处1.避免循环引用问题出现

好处2.避免引入用不到的内容,延长编译时间

第三条:多使用字面量语法

好处:简化代码,易读性更强

例如@"abc"而不是[[NSString alloc]initwithString"abc"]

其他类似,你懂得,字典,数组

第四条:多有类型常量,少有宏定义

例如:static const NSString * name = @"abc"

好处是:节省编译时间

第五点:使用枚举表示状态值的改变

0 0