- Effective Objective-C 2.0 读书笔记
- Effective Objective-C 2.0笔记(二)
- Effective Objective-C 2.0笔记(一)
- Effective Objective-C 2.0笔记(三)
- Effective Objective-C 2.0笔记(五)
- 《Effective Objective-C 2.0 》 阅读笔
- Effective Objective-C 2.0 无废话精简篇
- Effective Objective-C 2.0 脑图- [O
- iOS开发读书笔记:Effective Objective-C
- iOS开发读书笔记:Effective Objective-C
#第三章 接口与API设计
讲述文件与方法命名的规范。
十五:用前缀避免命名空间冲突
要点
- 选择与你的公司应用程序或者二者皆有关的名称作为类名的前缀,并在所有代码中均使用过这一前缀。
- 若自己开发的程序库中用到了第三方库,则应为其中的名称加上前缀。
十六:提供全能初始化方法
一种必须走自定义初始化方法的思路:
-(id)init{
return [self initWithWidth5.0f andHeight:10.0f];
}
-(id)init{
@throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Must use initWithWidth:andHeight: instead."] userInfo:nil];
}
全能初始化方法的调用链一定要维系,再继承的时候。每个子类的全能初始化方法都应调用其超类的对应方法,并逐层向上。
要点:
- 再类中提供一个全能初始化方法,并于文档里指明。其他初始化方法均应调用歌词方法。
- 若全能初始化方法与超类不同,则需要覆写超类中的方法。
- 如果超类的初始化方法不适用子类,那么应该覆写这个超类方法,并在其中抛出异常。
十七:实现description方法
利用字典实现类的打印:
-(NSString*)description
{
return [NSString stringWithFormat:@"<%@: %p, %@>",[self class],self,
@{@"title":_title,
@"latitude":@(_latitude),
@"longitude":@(_longitude)
}];
}
要点:
- 实现description方法返回一个有意义的字符串,用以描述该实例。
- 若想再调试时打印出更详尽的兑现跟描述信息,则应该实现debugDescription.
十八:尽量使用不可变对象
- 尽量创建不可变对象。
- 若某属性仅可用于对象内部修改,则在 class-continuation分类中将其由readonly属性扩展为readwrite属性
- 不要把可变的collection作为属性公开,而应提供相关方法,以此修改对象中的可变。
十九:使用清晰而协调的命名方式
要点:
- 起名时应遵从标准的OC 命名规范,这样创建出来的接口更容易为开发者所理解。
- 方法名要言简意赅,从左至右读起来要像日常用语的句子才好。
- 方法名里不要使用缩略后的类型名称。
- 给方法起名时第一要务就是确保其风格与你自己的代码或索要继承的框架相符。
20:为私有方法加前缀
要点
- 给私有方法名加上前缀,遮掩够可以很容易的将其与公共方法区分开。
- 不要但用一个下划线做私有方法的前缀,因为这种做法是预留给苹果公司用的。
21:理解OC错误模型
要点
- 只有发生了可使整个应用程序崩溃的严重错误时,才应使用异常。
- 再错误不那么严重的情况下,可以指派委托方法来处理错误,也可以把错误信息放在NSError对象里,经由输出参数返回给调用者。
二十二:理解NSCopying协议
要点
- 若想令自己所写的对象具有拷贝功能,则需事先NSCopying协议。
- 入股哦自定义的 对象分为可变和不可变版本,那么就要同时事先NSCopying与NSMutableCopying协议
- 复制对象时决定采用浅拷贝还是深拷贝,一般情况下尽量执行浅拷贝。
- 如果你缩写对象需要深拷贝,那么可考虑新增一个专门执行深拷贝的方法。
网友评论