编写高质量的iOS代码(持续更新)

1.多用字面量语法,少用与之等价的方法

1.字面量字符串的创建

NSString *str =@"I Love You!";

NSString *str = [[NSString alloc] init....]

上边的一种就是字面量

2.字面数值

    NSNumber *intNum = [NSNumbernumberWithInt:1];

    NSNumber *floatNum = [NSNumbernumberWithFloat:2.0f];

    

    NSNumber *intNum1 =@1;

    NSNumber *floatNum1 =@2.0f;

下边的两种就是字面量数值

3.字面数组

    NSArray *arr = [NSArrayarrayWithObjects:@"1",@"2",@"3",nil];

   //拿数组中的第一个元素

    NSString *obj = [arr objectAtIndex:0];

    

    NSArray *arr1 =@[@"1",@"2",@"3"];

   //拿数组中的第一个元素

    NSString *obj1 = arr1[0];

下边的是字面数组

4.字面字典

    NSDictionary *dic = [NSDictionarydictionaryWithObjectsAndKeys:@"I",@"1",@"Love",@"2",@"You",@"3",nil];

    NSString *value1 = [dicobjectForKey:@"1"];


    NSDictionary *dic1 =@{@"1":@"I",@"2":@"Love",@"3":@"You"};

    NSString *value2 = dic1[@"2"];



下边的是字面字典

5.可变数组和字典


通过字面量的取下标操作

    NSArray *arrTest =@[@"1",@"2",@"3"];

    NSMutableArray *mutableArr = [NSMutableArrayarrayWithArray:arrTest];

    

    NSDictionary *dicTest =@{@"1":@"I",@"2":@"Love"};

    NSMutableDictionary *mutableDic = [NSMutableDictionarydictionaryWithDictionary:dicTest];

    

    

    [mutableArr replaceObjectAtIndex:0withObject:@"100"];

    mutableArr[0] =@"100";

    

    [mutableDic setObject:@"You"forKey:@"1"];

    mutableDic[@"1"] =@"You";

通过上边的字面量,我们可以看出:简单扼要,通过取下标访问数组或者字典,代码更简单,容易维护,推崇使用字面量。

2.多用类型常量,少用宏定义(这个我之前细说过这个问题)

今天提到另一点:在头文件中extern一个语句,例如:

externconst int itemHeight;

在实现文件中

constint itemHeight = 100;

我们的编译器在看到头文件中的extern关键字之后,就能明白如何在引入此头文件的代码中处理该常量了。这个关键字就是告诉编译器,在全局符号表中将会有一个名字叫itemHeight的符号。换句话说,编译器无需查看其定义,即允许代码使用此常量。因为它知道,当链接成二进制文件之后,肯定是可以找到这个常量的。

3.属性中的atomatic与nonatomaic

atomatic与nonatomatic区别:
具备atomaic特质的获取方法会通过锁定机制来确保其操作的原子性。也就是说,如果两个线程读写同一属性,那么不论何时,总能看到有效的属性值,如果不加锁(也就是使用nonatomatic),那么当其中一个线程正在改写某属性值时,另外一个线程也许会突然闯入,把还没修改好的属性值读取出来。发生这种情况,线程读到的属性值可能就不对了。这么一听,对啊,那赶紧用atomaic啊,用什么nonatomaic?


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值