美文网首页
熟悉OC(1-11)

熟悉OC(1-11)

作者: tonytong | 来源:发表于2017-02-04 15:59 被阅读0次

    第一条

    OC语言由Smalltalk演化而来,Smalltalk语言是消息型鼻祖,消息结构和函数调用的区别如下:

    //message structure

    Object *obj = [Object new];

    [obj preformWith:paramter1 and:paramter2];

    //function calling

    Object *obj = new Object;

    obj->preform(paramter1,paramter2);

    关键区别:消息结构运行时所执行的代码由运行环境来决定;而函数调用则由编译器决定。

    第二条

    在类的头文件中尽量少引入其他头文件

    1.@class的使用(向前引用)

    2.#import避免循环引入

    3.减少代码的耦合度

    第三条

    多用字面量语法,少用与之等价的方法

    1.代码简洁,可读性高

    第四条

    多用类型常量,少用#define预处理指令

    第五条

    用枚举表示状态、选项、状态码

    1.按位或操作符定义枚举选项

    2.typedef定义枚举类型

    第六条

    理解属性概念

    1.属性为对象特性,记录对象数据的产物

    2.属性特质,用于修饰属性特性,常见属性特质(atomicity,noatomic,readwrite等等)

    3.getter 和 setter方法

    第七条

    对象内部尽量直接访问对象实例变量

    1.不经由OC的“方法派发”(method dispatch)直接访问实例变量速度快

    2.直接访问实例变量不会访问setter方法

    3.不触发键值观察(KVO)

    4.通过属性访问有助于错误排除

    第八条

    理解“对象等同性”

    1.isEqual和hash方法

    2.相同的对象具有相同的哈希吗,但是哈希码相同的对象却未必相同

    3.hash时要慎重

    第九条

    以“类族模式”隐藏实现细节

    1.类族模式可以实现细节隐藏

    2.系统架构中经常使用

    3.从类族的公开抽象基类中继承子类时要当心

    第十条

    在既有类中使用关联对象存放自定义数据

    1.可以通过“关联对象”机制来把两个对象连接起来

    2.定义关联对象时可指定内存管理语义,定义属性的特质

    3.只有在其他做法不可行时才应选用关联对象,此种做法会引入难以查找的bug

    第十一条

    理解objc_msgSend的作用

    1.消息由接受者、选择子及参数构成

    2.发给某对象的全部消息都由“动态消息派发系统”来处理

    相关文章

      网友评论

          本文标题:熟悉OC(1-11)

          本文链接:https://www.haomeiwen.com/subject/bpjjittx.html