美文网首页
iOS 编写高质量代码

iOS 编写高质量代码

作者: 狼凤皇 | 来源:发表于2016-10-27 15:23 被阅读61次

    一.#import 如果在各自的头文件中引入对方的头文件,则会导致“循环引用” 使用#import 而非 #include指令虽然不会导致死循环,但却意味着这两个类里又一个无法被正确编译。

    二.多用常量 少用#define 预处理指令

    宏:只是在预处理器里进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化。只保存一份到 .rodata 段。甚至有相同后缀的字符串也可以优化,你可以用GCC 编译测试,"Hello world" 与 "world" 两个字符串,只存储前面一个。取的时候只需要给前面和中间的地址,如果是整形、浮点型会有多份拷贝,但这些数写在指令中。占的只是代码段而已,大量用宏会导致二进制文件变大

    变量:共享一块内存空间,就算项目中N处用到,也不会分配N块内存空间,可以被修改,在编译阶段会执行类型检查

    常量:共享一块内存空间,就算项目中N处用到,也不会分配N块内存空间,可以根据const修饰的位置设定能否修改,在编译阶段会执行类型检查

    常量

    全局常量:不管你定义在任何文件夹,外部都能访问

    constNSString*HSCoder =@"汉斯哈哈哈";

    局部常量:用static修饰后,不能提供外界访问

    staticconstNSString*HSCoder =@"汉斯哈哈哈";

    const修饰位置不同,代表什么?

    1.const NSString *HSCoder = @"汉斯哈哈哈";

    "*HSCoder"不能被修改, "HSCoder"能被修改

    2.NSString const *HSCoder = @"汉斯哈哈哈";

    "*HSCoder"不能被修改, "HSCoder"能被修改

    3.NSString * const HSCoder = @"汉斯哈哈哈";

    "HSCoder"不能被修改,"*HSCoder"能被修改

    const右边的总不能被修改

    #define KANIMATION_DURATION 0.3

    static const NSTimerInterval KAnimationDuration = 0.3;

    常量名称:常量在.m中则在前面添加字母k,若常量在类外可见则通常以类名为前缀。

    常量的使用

    #import

    @interfaceSMConst :NSObject

    externCGFloatconstSMMMMMMMMMFloat;

    externNSString*constSMMMMMMMMMString;

    @end

    #import"SMConst.h"

    @implementationSMConst

    #if DEBUG

    CGFloatconstSMMMMMMMMMFloat =100;

    NSString*constSMMMMMMMMMString =@"ddd";

    #else

    CGFloatconstSMMMMMMMMMFloat =90;

    NSString *constSMMMMMMMMMString =@"bbb";

    #endif

    @end

    1.不要使用预处理指令定义常量,而借助编译器来确保常量正确,在.m文件中用static const 来声明常量

    2.不要好似用预处理指令定义常量。这样定义出来的常量不含类型信息,编译器只是会在编译前据此执行查找与替换操作。即使有热闹重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中的常量值不一致。

    3.在实现文件中使用static const 来定义 “只在编译单元内可见常量”。由于此类常量不在全局符号表中,所以无须尾气名称加前缀。

    4.在头文件中使用 extern 来声明全局常量,并在相关实现文件中定义其值。这种常量要出现在全局富豪表中国年,所以其名称应该加以区隔,通常用与之相关的雷名做前缀。

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

    四.属性的特质

    @property (nonatomic,readwrite,copy) NSString *name;

    iOS Runtime  引用  iOS~runtime理解

    相关文章

      网友评论

          本文标题:iOS 编写高质量代码

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