1.指针分配在栈区,对象分配在堆区
2.除非确实必要,否则不要引入头文件;如果一定要引入,尽量使用“向前声明” @class
3.尽量使用字面量语法
例如 : NSNumber *someNumber = @1;
NSNumber *doubleNumber = @3.1415926;
NSNumber *boolNumber = @YES;
NSNumber *charNumber = @‘a';
创建数组/字典时也一样,因为字面量语法可以报错
例如: NSArray *array = @[ object_0 , object_1 , object_2 ]; 如果 object_1 为nil ,系统会报错,但是如果使用系统方法就不会。
可变字典: NSMutableArray *mutable = @[@[@1,@2,@3,@4]mutableCopy ];
4.多用类型常量,少用#define预处理指令
声明局部变量 : 在.m 文件中 static const NSTimeInterval kAnimationDuration = 0.3;
声明全局变量 : 在.h 文件中 extern NSString *const MKMYManagerDidLoginNotification;
在.m 文件中 NSString *const MKMYManagerDidLoginNotification = @“MKMYManagerDidLoginNotification”;
5.枚举
尽量使用枚举表示状态机的状态
typedef NS_ENUM(NSUInteger , MKMYConnectionState ){
MKMYConnectionStateDisconnected,
MKMYConnectionStateConnecting,
MKMYConnectionStateConnected,
}
typedef NS_OPTIONS( NSUInteger , MKMYPermittedDirection ){
MKMYPermittedDirectionUp = 1 << 0 ,
MKMYPermittedDirectionDown = 1<<1,
MKMYPermittedDirectionLeft = 1<<2,
MKMYPermittedDirectionRight = 1 <<3,
}
第二种一般用于 传递给某个方法的选项为枚举 例如:MKMYPermittedDirection permittedDirections = MKMYPermittedDirectionUp | MKMYPermittedDirectionDown; 要使用第二种
在处理枚举类型的switch语句中不要实现default分支。这样的话,加入新枚举之后,编译器会提示开发者:switch 语句并未处理所有的枚举
github:Baoy