美文网首页
《编写高质量iOS与OS X代码的52个有效方法》1-3

《编写高质量iOS与OS X代码的52个有效方法》1-3

作者: 小如99 | 来源:发表于2018-06-23 20:38 被阅读12次

    第一条:了解Object-C的来源

    解析:
    消息传递和函数调用的区别

    1. 消息传递在运行时才会调用函数体,判断参数,而编译期只判断该函数是否有申明
    2. 函数调用在编译期就确定函数体及其参数类型

    Q:
    动态绑定

    对象所占内存总是分配在“堆空间”(heap space),不能在栈上分配Object-C对象
    堆空间/栈空间原理?有什么影响,什么时候用堆什么时候用栈?

    要点:
    1. Objective-C为C语言添加了面向对象特性,是其超集。Objective-C使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型。接收一条消息之后,究竟应该执行何种代码,由运行期环境而非编译器决定。
    2. 理解C语言的核心概念有助于写好Objective-C程序,尤其掌握其内存模型与指针。

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

    解析:
    @class EOCEmployer 向前声明(forward declaring)

    要点:
    1. 除非确有必要,否则不要引入头文件。一般来说,应在某个类的头文件中使用向前声明来提及别的类,并在实现文件中引入那些类的头文件。这样做可以尽量降低类之间的耦合,并且加快编译。
    2. 有时无法使用向前声明,比如要声明某个类遵循一项协议。这种情况下,尽量把“该类遵循某协议”的声明移至“class-continuation分类”中,如果不行的话,就把协议单独放入一个文件,并将其引入。

    第三条:多用字面量方法,少用与之等价的方法

    解析:
    什么是字面量语法?字面量语法也是一种糖衣语法,让开发者用起来更方便的语法,易读减少出错几率,如下:
    NSNumber *number = @2.5f;
    与之等价的语法是:
    NSNumber *number = [NSNumber numberWithFloat:2.5];
    映射性数据结构:字典
    字典的字面量语法:
    NSDictionary *dic = @{@“number”:value};
    等价于
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:value,@"number",nil];;

    value为nil时,字面量语法会崩溃,第二种写法不会崩溃,因为它一遇到nil就认为停止了,所以用字面量语法更安全。
    局限性:

    字面量语法除了除了字符串以外,所创建出来的的对象必须属于Fundation框架才行。如果自定义这些类的子类、则无法用字面量语法创建其对象。自定义字符串是可以用字面量语法,但是要修改编译器的选项才行。

    要点:
    1. 应该使用字面量语法来创建字符串、数值、数组、字典。与创建此类对象的传统方法相比,这么做更加简明扼要。
    2. 应该通过取下标操作来访问数组下标或字典中的键所对应的元素
    3. 用字面量语法创建数组或字典时,若值中有nil,则会抛异常。因此务必确保值里不含nil。

    相关文章

      网友评论

          本文标题:《编写高质量iOS与OS X代码的52个有效方法》1-3

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