美文网首页iOS专题iOS干货iOS开发技巧
编写高质量iOS与OS X代码的52个有效方法上

编写高质量iOS与OS X代码的52个有效方法上

作者: iOS行者 | 来源:发表于2015-07-23 14:54 被阅读849次

    第一章 熟悉Objective-C

    1.了解起源

    oc 使用“消息结构”,运行时执行的代码由运行环境决定,而函数调用的语言,由编译器决定。

    在oc,有部分变量不算oc对象,如CGRect.

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

    将引入头文件的时间尽量延后,可以减少类的使用者所需引入的头文件的数量。

    一般的做法是:

    #Person.h

    @class A

    #Person.m

    #import A

    但是如果你的类继承自某个类,或者有代理方法,就必须放在.h

    3.多使用字面量语法

    这个语法方便好用,但是我还是有点不习惯。一般数组,字典的我用它。

    如 NsArray *animals = @[@"cat",@"dog"];常规写法我就不写了。

    取数组下标: NSString *dog = animals[1];

    NSDictionNary *dic = @{@"dog":@"first",@"cat":@"second"};

    NSString *dog = dic[@"first"];

    局限性:字面量的元素不能为nil,而且除了字符串以为必须为Foudation对象。并且都是不可变的 ,如需可变 后面需要加 mutableCopy.

    4.多用类型常量,少用#define

    预处理不含类型信息,在.m中加入static const,定义只在编译单元可见。

    5.用枚举表示状态,选项

    第二章:对象,消息,运行期

    6.理解属性

    nonatmic,atomic,非原子性。表示线程不安全。atomic有锁机制。但是耗费性能。所以,ios中还是用nonatmic

    assign,weak 区别:assign修饰常量。weak 会 set nil.

    strong,copy.一般字符串用copy.

    其他的我就不说了。

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

    10.关联属性

    12.理解消息转发机制

    消息转发分为2个阶段:1.征询接受者,所属的类看其是否能够动态添加方法,以处理当前这个@selector,这叫做动态方法解析,2.看看有没有其他对象能处理这条消息,若有,则运行期系统会把消息转给那个对象,于是消息转发过程结束。否则,启动完整的转发机制,运行期系统会把与消息有关的全部细节封装到NSInvocation.再给接收者最后一次机会,令其设法解决当前未处理的消息。

    动态方法解析:

    对象在收到无法解读的消息后,会调用:

    +(BooL)resloveInstanceMethod:(SEL)selector

    备援接收者

    -(id)forwardingTargetForSelctor:(SEL)selector

    完整的消息转发机制

    创建NSInvocation对象,把未处理的消息有关的全部细节都封于其中,此对象包含选择子,目标,及参数。

    实现此方法时,若发现某调用操作不应由本类处理,则需调用超类的同名方法。直至NSObject.如果最后调用了NSObject方法,那么该犯法会继续调用“doesNotRecongnizeSelector”.

    -(void)forwardInvoation:(NSInvocation*)invocation

    相关文章

      网友评论

        本文标题:编写高质量iOS与OS X代码的52个有效方法上

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