编写高质量iOS代码(四)

1.通过委托与数据源 协议 进行对象间通信
a 委托模式为对象提供可一套接口,使其由此将相关事件告知其他对象
b 将委托对象应该支持的接口定义为协议,在协议中把可能需要处理的事件定义成方法
c 当某一对象需要从另外一个对象获取数据时,该模式亦称为 数据源协议
d 若有必要 可实现含有段位的结构体,将委托对象是否能响应相关协议方法这一信息缓存起来

@interface NetWorkFetcher : NSObject 
{
    struct {
        unsigned int didReceveData      : 1;
        unsigned int didFailWithError   : 1;
    } _delegateFlag;
    id _delegate;
}
@end

@implementation NetWorkFetcher

- (void)setDelegate:(id)delegate
{
    _delegate = delegate;
    _delegateFlag.didReceveData = [delegate respondsToSelector:@selector(didReceveData:)];
    _delegateFlag.didFailWithError = [delegate respondsToSelector:@selector(didFailWithError:)];
}

@end

2.将类的实现代码分散到便于管理的各个分类之中去
a 使用分类机制把类的实现代码划分成易于管理的小块
b 将应该视为 私有 的方法 归入名为private 的分类中 以便隐藏实现细节
3.总是为第三方类的分类名加前缀
a 类名加前缀
b 分类中的方法名 也要加前缀
4. 勿在分类中声明属性
a 分类无法合成 实例变量,数据应该全部定义在主接口礼貌,属性是语法糖,同样要遵守此规则
b 可使用关联对象 在分类中 扩展出属性,要注意内存管理语义
c 匿名分类 class-continuation 可以合成实例变量 以及 属性
5.使用 class-continution 分类 隐藏实现细节
a 新增实例变量 或者 属性
b 在主接口中 属性声明为 只读,在匿名分类中 扩展为 读写,就可以在内部使用了
c 私有方法原型 声明在 匿名分类 里面
d 隐藏遵循的协议
6. 通过协议提供匿名对象
a 协议可再某种程度上提供匿名类型,具体的对象类型可以淡化成遵从某种协议的id类型,在协议里规定了对象所实现的方法
b 使用匿名对象来隐藏类型名称
c 如果具体的类型不重要,重要的时对象能够响应的方法,那么可以用匿名对象来表示

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值