effective objective-c 2.0 笔记 第三章 :接口与API设计
来源:互联网 发布:神马快递打印软件 编辑:程序博客网 时间:2024/05/22 03:11
目录结构:
1.用前缀避免命名空间冲突
2.提供全能初始化方法
3.实现description方法
4.尽量使用不可变对象
5.使用清晰而协调的命名方式
6.为私有方法名加前缀
7.理解objective-c错误模型
8.理解nscopying协议
选择公司,应用程序或者两者有关联的名字作为类名的前缀,若自己所开发的程序库用到了第三方库,则应为其中的名称加上前缀。
尽量创建不可变对象,若属性对象仅可用于内部修改,则在class-continuation分类中将readonly属性修改为readwrite属性。
不要把可变的collection作为属性公开,应提供相关方法修改可变的collection.
命名方式一般采用驼峰式。
比较下面两种命名方式:
方式一
-(void)initWithSize:(float)width:(float)height;
[[A alloc] initWithSize:5.0f :10.0f];
方式二
-(void)initWithWidth:(float)width andHeight:(float)height;
[[A alloc] initWithWidth:5.0f andHeight:10.0f];
方式二方法名长一些,但是可读性更强。
命名应协调一致,如继承自UIView类名应该以View结尾,定义委托接口应该以Delegate结尾等。
私有方法名最好加上前缀跟公有方法名区别开来,通常加上p_作为前缀。
自动引用计数默认情况不实异常安全的。抛出异常会造成本应在作用域末尾释放的对象不会自动释放。
要做到异常安全,需要添加-fobjc-arc-exceptions
objective-c通常只在极其罕见的情况下抛出异常,表示发生了极其严重的错误,无须考虑恢复问题。
一般错误通常返回nil或者用NSError来处理。NSError包括错误范围,错误码,用户信息。
对象要支持拷贝操作需要实现NSCopying协议,协议只有一个方法:
-(id)copyWithZone:(NSZone *)zone;
程序把内存分为不同的区,对每个程序而言,只有一个默认的区(default zone);
实现范例:
-(id)copyWithZone:(NSZone *)zone{
A *copy = [[[self class] copyWithZone:zone] initWithFirstName:_firstName
andLastName:_lastName];
return copy;
}
-(id)initWithFirstName:(NSString *)firstName andLastName:(NSString *)lastName{
if(self = [super init]){
_firstName = [firstName copy];
_lastName = [lastName copy];
_friends = [NSMutableSet new];
}
return self;
}
对与可变对象的拷贝,需要支持NSMutableCopying协议。实现方法-(id)mutableCopyWithZone:(NSZone *)zone;
一般情况下自定义类会以浅拷贝的方式实现copyWithZone方法。
- effective objective-c 2.0 笔记 第三章 :接口与API设计
- 【Effective Objective-C 2.0读书笔记】第三章:接口和API设计
- Effective Objective-C(第15-22条)接口与API设计、深拷贝、浅拷贝
- 《Effective Objective-C 2.0》读书笔记---第三章
- effective objective-c 2.0 笔记 第四章 :协议与分类
- Effective Objective - C 2.0 笔记
- 《Effective Objective C 2.0》笔记
- Effective OC之接口与API设计
- Effective Objective-C笔记
- Effective C++(四)接口设计与声明
- effective objective-c 2.0 笔记 第五章 :内存管理
- 《Effective Objective-C 2.0》学习笔记1
- Effective Objective-C 2.0 学习笔记之一
- Effective Objective-C 2.0学习笔记(部分)
- Effective Objective-C 2.0 学习笔记
- effective objective-c 2.0 笔记 第一章 :熟悉Objective-C
- 笔记Effective objective-C 2.0之了解Objective-C
- 学习笔记:Effective Objective-C
- MIX
- 10.5 zipfile--支持ZIP压缩包
- 第10、11周项目4 教师兼干部类
- K-Means Hadoop MapReduce
- RobHess的SIFT源码分析:kdtree.h和kdtree.c文件
- effective objective-c 2.0 笔记 第三章 :接口与API设计
- 关于Struts2+spring+maven中使用百度UEditor编辑器显示未找到上传数据的解决方案
- 分区分配方案
- Azure ServiceBus 学习记录
- PHP 基础教程1
- L3-2. 堆栈(线段树单点更新)
- 系统属性调用评估表
- APP上架流程
- 编译caffe