编写高质量iOS、OS X代码的52个有效方法(一)

2016-04-05  本文已影响121人  952625a28d0d

熟悉OC

使用@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;```

上一篇下一篇

猜你喜欢

热点阅读