美文网首页iOS 笔记
iOS 有效编写高质量Objective-C方法

iOS 有效编写高质量Objective-C方法

作者: Dayon | 来源:发表于2016-11-09 14:54 被阅读6次

1.在类的头文件中尽量少引用其他头文件

使用“向前声明”方法

@classname;

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

使用字面量要点

  • 对于字符串、数值、数组、字典,应尽量使用字面量创建
  • 访问数组或字典,应尽量使用下标发来访问 例如:arr[1] dic[@”key1”]
  • 创建字面量时,需要保证值中没有nil对象,否则会报异常

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

  • 对于常量的命名,一般用法是:
    如果常量只是作用于当前的编译单元(就是当前的.m实现类),那么应该在常量的名称前加上k
    如果常量还要作用于外部,需要以当前的类名为前缀
    常量一定要用static const两个一起定义,因为我们本来就是希望它是一个常量,不能够被更改
    还有一个原因,因为我们常量只作用于当前的.m类,如果不加上static,那么编译器在编译我们当前的类时,会给它加上一个外部符号(external symbol),如果其他类也定义了一个相同的同名变量,那么编译器就会报错

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

  • 在对象之外,我们知道总是通过属性(property)来对实例变量进行操作,那么在实例内部应该怎么做呢? 强烈建议在除了在懒加载中,其他情况下,都应该是:
    在读取变量时,都应该采用直接访问的形式(_变量名),在设置实例变量时通过属性来设置

5.枚举

在Foundation框架中,定义了一些辅助的宏,在定义枚举时,我们经常使用这些宏来指定枚举的底层数据

typedef NS_ENUM(NSUInteger, PPSConnectionState){
    PPSConnectionStateDisconnected,
    PPSConnectionStateConnecting,
    PPSConnectionStateConnected,
};
typedef NS_OPTION(NSUInteger, UIViewAutoresizing){
    UIViewAutoresizingNone = 0,
    UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
    UIViewAutoresizingFlexibleWidth = 1 << 1,
    UIViewAutoresizingFlexibleRightMargin = 1 << 2,
    ...
};

我们看到上面有两种方式的宏,那么我们应该怎样来选择呢
凡是需要以位或操作来组合枚举的都应使用NS_OPTION来定义
凡是枚举不需要组合,都应该使用NS_ENUM来定义

相关文章

网友评论

    本文标题:iOS 有效编写高质量Objective-C方法

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