熟悉OC
- 在类的头文件尽量少引入其他头文件
- 多用字面量语法,少用与之等价的方法
- 多用类型变量、少用#define 预处理指令
- 用枚举表示状态、选项、状态码
使用@class
将引入头文件的时机尽量延后。
使用协议
有的时候无法使用向前声明,比如要声明某一个类遵循一项协议。这种情况下,尽量把“该类遵循某协议”的这条声明移至“class-continuation分类”中,如果不行的话,就把协议单独放在一个头文件中,然后将其进入。
多用字面量语法
NSNumber *someNumber = [NSNumber numberWithInt:1];
NSNumber *someNumber1 = @1;
// 整形
NSNumber *intNumber = @1;
// 浮点
NSNumber *floatNumber = @2.5f;
// 双精度
NSNumber *doubleNumber = @3.1415926;
// 布尔
NSNumber *boolNumber = @YES;
// 字符
NSNumber *charNumber = @'a';
// 运算
int x = 5;
float y = 6.32f;
NSNumber *expressionNumber = @(x * y);
// 数组 使用字面量创建数组的时候要注意,如果数组中有对象为nil,则会抛出异常。所以用这种方法创建的数组更为安全,当程序找不到对应的元素或者找到的元素为空的时候则会使程序终止运行,向数组中插入nil通常说明程序有错,而通过异常可以更快的发现这个错误。所以务必确保值里面不含nil。
NSArray *animals1 = [NSArray arrayWithObjects:@"cat",@"dog",@"mouse",nil];
NSArray *animals = @[@"cat",@"dog",@"mouse"];
NSString *dog = [animals1 objectAtIndex:1];
NSString *dog1 = animals[1];
// 字典 通过比较我们会发现只用字面量写出来的会更加清晰易懂
NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:@"matt",@"firstName",@"Galloway",@"lastName",[NSNumber numberWithInt:25],@"age", nil];
NSDictionary *personData1 = @{@"firstNaem":@"matt",@"lastName":@"Galloway",@"age":@28};
NSString *lastName = [personData objectForKey:@"lastName"];
NSString *lastName1 = personData1[@"lastName"];
// 可变数组与字典 通过取下标操作,可以访问数组中某个下标或者字典中某个键所对应的元素,如果数组与字典对象是可变的,那么也可以通过下标来修改其中的元素值。
NSMutableArray *mutableAnimals = [animals1 copy];
NSMutableDictionary *mutablePersonData = [personData copy];
[mutableAnimals replaceObjectAtIndex:1 withObject:@"dog"];
[mutablePersonData setObject:@"Galloway" forKey:@"lastName"];
// 下标取值
mutableAnimals[1] = @"dog";
mutablePersonData[@"lastName"] = @"Galloway";```
####多用类型常量 少用#define预处理指令
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px 'Heiti SC Light'; color: #008400}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #78492a}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo}span.s1 {font: 18.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures; color: #272ad8}span.s4 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s5 {font-variant-ligatures: no-common-ligatures; color: #703daa}
// 使用预处理指令定义
define JYF 0.3
// 使用类型常量定义 好处是清楚地描述了变量的含义 有助于为其编写开发文档 如果不打算公开某个常量 则已经将其定义在使用该变量的实现文件里
static const NSTimeInterval kAnimationDuration = 0.3;```
-
变量一定要同时用static和const来声明。如果视图修改由const修饰符所声明的变量,那么编译器就会报错。
-
有时候需要对外公开某个常量。此类常量需放在“全局符号表”(global symbol table)中,以便可以在定义该常量
网友评论