学习Objective-C也有一段时间了,最近趁着没事,看了Effective Objective-C 2.0这本书,既然看书,那么就把其中的要点记录一下,以便以后查询
1.熟悉Objective-C
在类的头文件中尽量少引用其他类的头文件
在类的头文件中,如果需要用到其他的类,那么不需要使用#import@“XXX.h”来引入头文件,因为它不需要知道里面的全部细节,只需要使用@class来声明就可以了,将引入的头文件尽量延后,可以减少编译时间。
多用字面量语法,少用与之等价的方法
这条比较好理解,即 NSString *str = @“123” == [NSString stringwithstring:@"123"] , NSNumber *n = @1 == [NSNumber numberWithInt:1] , 等等,全部使用第一种写法,包括但不限于以上几种。
多用类型常量,少用#define预处理指令
尽量避免在头文件中使用#define来进行预处理指令,因为不可避免的会有头文件包含,假如会存在相同名称的两个预处理指令,会有意料之外的异常出现。
如果只在本类中能够使用的常量,那么应该在#implement中进行定义,类似于 static const NSTimeInterval kAnimationDuration = 0.2; 其中 static表示只在编译单元的内部可以使用。 const则表示该值是不可改变的 如果改变会报错。假如要定义全局可以使用的常量,那么就在.h文件中定义常量名: extern const NSTimeInterval EOCAnimationDuration,在.m文件中进行该常量的赋值:const NSTimeInterval EOCAnimationDuration = 0.2。
用枚举表示状态,选项,状态码
使用enum来进行定义,替换数字,以便程序员记忆。类似于
typedef enum : NSUInteger {
<#MyEnumValueA#>,
<#MyEnumValueB#>,
<#MyEnumValueC#>,
} <#MyEnum#>;
如果可以同时使用其中多个状态,那么可以将其中的状态定义为2的幂,方便以后的组合,
如果使用了枚举,那么在switch-case中不要使用default,这样为了以后增加新的枚举值后编译器可以提示用户没有全部实现
网友评论