编写高质量IOS代码(一)

1.在类的头文件中尽量少引入其他头文件

a.可以使用向前声明(forward declaring),降低耦合度。枚举类型也可以向前声明。
b.协议声明 可以移到分类(class-continuation)中去

2.多用字面量语法

a.数值

    NSInteger i = 5;
    NSNumber * number = @(i);
    NSLog(@"number = %ld",(long)[number integerValue]);

b.数组

NSArray * array = @[@"dog",@"cat",@"mouse"];

NSString * dog = array[0];

注意: 元素若有nil,会抛异常。
c.字典

NSDictionary * dic = @{@"key":@"value",
                       @"key2":@"value2",
                       @"key3":@"value3"};

d.字符串

NSString *str = @"hello world";

e.可变数字和字典

mutableArray[1] = @"cat";
mutableDictionary[@"key"] = @"value";

数组 字典元素必须是oc对象。
字面量语法创建的对象必须属于Foundation框架,子类是不行的。
字面量语法创建的对象是不可变的,需要时可用mutablecopy复制一份。

3.多用类型常量,少用宏定义

宏定义常量 不包含类型信息,可被重新定义且不会产生警告。
a.编译单元内可见 的常量

static const CGFloat kCellheight = 44.0f;

b.全局常量

xx.h
extern const NSInteger className_cellTag;
xx.m
const NSInteger className_cellTag = 999;

会出现再全局符号表中,名称加类名以便区分。

4.枚举类型

a.用NS_ENUM 与 NS_OPTIONS 来定义枚举类型,可以指定底层数据类型。

typedef NS_ENUM(NSInteger,AnimationState)
{
    xxx1,
    xxx2,
    xxx3
};

typedef NS_OPTIONS(NSInteger,AnimationState)
{
    xxxxx1 = 1 << 0,
    xxxxx2 = 1 << 1,
    xxxxx3 = 1 << 2,
};

b.处理枚举类型的switch语句不要实现default分支,有利于处理新增枚举。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值