我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3575599.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。
第2条:在类的头文件中尽量少引入头文件
1. 常规情况:
在.h文件中:(写在@interface之前)
@class SomeClass;
在.m文件中:
#import "SomeClass.h"
2. 必须在.h中引入头文件的情况:
- 类继承某个超类
- 类实现某个协议
第3条:尽量使用“字面量语法(literal syntax)”
- 要用:
NSNumber* intNumber = @;
NSNumber* floatNumber = @5.2f;
NSNumber* doubleNumber = @5.27413;
NSNumber* expressionNumber = @(x*y);不要用:
NSNumber* someNumber = [NSNumber numberWithInt:];
- 要用:
NSArray* animals = @[@"hamster", @"dog", @"cat"];
NSString* hamster = animals[]; NSMutableArray* mutableArray = [@[@"hamster", @"dog", @"cat"]mutableCopy];
mutableArray[] = @"hamster";不要用:
NSArray* animals = [NSArray arrayWithObjects:@"hamster",@"cat",@"dog", nil];
NSString* hamster = [animals objectAtIndex:]; - 要用:
NSDictionary* animalData =
@{@"name" : @"Tom",
@"age" : @}; NSString* name = animalData[@"name"];
animalData[@"name"] = @"Jerry";
第4条:定义常量少用#define
1. 只在这个类内部使用
在.m文件中:(写在@implementaion之前)
static const double kSomeNumberConstant = 5.274;
static NSString* const kSomeStringConstant = @"hamster";
加字母k作为前缀。
2. 可能在类之外使用
在.h文件中:(写在@interface之前)
extern NSString* const HAMMyClassSomeStringConstant;
在.m文件中:(写在@implementation之前)
NSString* const HAMMyClassSomeStringConstant = @"hamster";
加类名作为前缀。
第5条:使用枚举类型
1. 写法——单独使用
定义:
enum HAMAnimalState : NSInteger {
HAMAnimalStateSleeping,
HAMAnimalStateEating,
HAMAnimalStateDoingNothing,
};
typedef enum HAMAnimalState HAMAnimalState;
其中指定类型的 : NSInteger 可加可不加。加了的可以前向声明。
使用:
HAMAnimalState state = HAMAnimalStateSleeping;
2. 写法——组合使用
定义:
enum HAMAnimalAbility {
HAMAnimalAbilityNone = ,
HAMAnimalAbilitySing = << ,
HAMAnimalAbilityDance = << ,
HAMAnimalAbilityTalk = << ,
HAMAnimalAbilityRun = << ,
}
typedef enum HAMAnimalAbility HAMAnimalAbility;
使用:
//ability to both sing and dance
HAMAnimalAbility ability = HAMAnimalAbilitySing | HAMAnimalAbilityDance;
if (ability & HAMAnimalAbilitySing){
//has ability to sing
}
3. 适合使用枚举类型的场合
- 某个对象的各种状态,如StateDisconnected, StateConnecting, StateConnected
- 表示选项(可能多选),如PermittedDirectionUp, PermittedDirectionDown, PermittedDirectionLeft
- 状态码
- 样式,如某个UI元素的不同样式