iOS开发的52个要点纪要之五

21、理解Objective-C错误模型

@throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"must be overriden" userInfo:nil]异常只用于处理严重错误。

出现不那么严重的错误时,OC语言的编程范式为:令方法返回nil/0,或者使用NSError,表明其中有错误发生。

-(id)initWithValue:(id)value{

if (self = [super init]){

if (/*value means instance can‘t be created*/){

self = nil;

}else{

//Initialize instance

}

}

return self;

}

NSError的用法更加灵活,可以把错误原因回报给调用者。NSError对象封装了三条信息:

Error domain(错误范围,其类型为字符串)

Error code (错误码,其类型为整数)

User info (用户信息,其类型为字典)

设计API时,NSError第一种常见的用法是通过委托协议来传递错误。

如NSURLConnection在其委托协议NSURLConnectionDelegate中定义了如下方法:

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

NSError另一种用法是:经由方法的“输出参数”返回给调用者,如:

-(BOOL)doSomething:(NSError *)error

只有发生了可使整个应用程序崩溃的严重错误时,才应使用异常。

在错误不那么严重的情况下,可以指派“委托方法”来处理错误。或作为输出参数。

22、理解NSCopying协议

若想令自己所写的对象具有拷贝的功能,则需实现NSCopying协议,并实现规定的方法:

-(id)copyWithZone:(NSZone *)zone;

如果自定义的对象分为可变版本和不可变版本,那么就要同时实现NSCopying与NSMutableCopying协议。

复制对象时需决定采用浅拷贝还是深拷贝,一般情况下应该尽量执行浅拷贝。

如果你写的对象需要深拷贝,那么可考虑新增一个专门执行深拷贝的方法。

23、通过委托和数据源协议进行数据间通信

委托模式为对象提供了一套接口,使其可由此将相关事件告知其他对象。

将委托对象应该支持的接口定义成协议,在协议中把可能需要处理的事件定义成方法。

当某对象需要从另外一个对象中或者数据时,可以使用委托模式,这种模式下,该模式可以称为“数据源协议(data source protocol)”。

若有必要,可实现含有位段的结构体,将委托对象是否能响应相关协议方法这一信息缓存至其中。

24、将类的实现代码分散到便于管理的数个分类之中

使用分类机制把类的实现代码划分成易于管理的小块。

将应该视为“私有”的方法归入名叫private的分类中,以隐藏实现细节。

25、为第三方类的分类名称加前缀

向第三方类中添加分类时,总应给其名称加上你专用的前缀。

向第三方类中添加分类时,总应给其中的方法名加上你专用的前缀。

时间: 2024-08-26 11:50:14

iOS开发的52个要点纪要之五的相关文章

iOS开发的52个要点纪要之二

6.可以用属性@property语法来定义对象中所封装的数据. 通过“特质”来指定存数数据所需的正确语义. 在设置属性所对应的实例变量时,一定要遵从该属性所声明的语义. 开发iOS程序时应该使用nonatomic属性,因为atomic属性会严重影响性能. 7.在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应通过属性来写. 在初始化方法及dealloc方法中,总是应该直接通过实例变量来读写数据. 有时会使用惰性初始化技术配置某份数据,这种情况下,需要通过属性来读取数据. 8.若要

iOS开发的52个要点纪要之三

11关于objc_msgSend的作用 其原型为:void objc_msgSend(id self, SEL cmd,...) objc_msgSend_stret 如果待发送的消息要返回结构体,交由此函数处理: objc_msgSend_fpret 如果消息返回的是浮点数,交由此函数处理: objc_msgSendSuper 如果要给超类发消息,交由此函数处理. 消息由接受者.选择子及参数构成.给某对象“发送消息(invoke a message)”也就相当于在该对象上“调用方法(call

iOS开发的52个要点纪要之四

16.提供“全能初始化方法” 在类中提供一个全能初始化方法,并于文档里指明.其他的初始化方法均应调用此方法. 如全能初始化方法与超类不同,则应覆写超类中的对应方法. 如果超类的初始化方法并不适用于子类,那么应该覆写这个超类方法,并在其中抛出异常. 17实现description方法 实现description方法,返回一个有意义的字符串,用于描述该实例 -(NSString *)description{ return [NSString stringWithFormat:@"<%@ :%p

iOS开发的52个要点纪要之一

1.Objective-C为C语言添加了面向对象的特性,是其超集.Objective-C使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型.接受一条消息之后,究竟应该执行何种代码,由运行期环境而非编译器来决定. 理解C语言的核心概念有助于写好Objective-C程序,尤其要掌握内存模型与指针. 2.除非确有必要,否则不要引入头文件.一般来说,应在某个类的头文件中使用向前声明来提及别的类,并在实现文件中引入头文件.这样可以尽量降低类之间的耦合. 有时无法使用向前声明,比如要声明某个类遵循

用虚拟机搭建IOS开发环境的一些要点

1.光盘镜像需要下载懒人安装版,后缀是.cdr 2.虚拟机用VMware12或11都行,很多地方有下载 3.设置好光盘,启动虚拟机时,如果弹出错误“不可恢复错误:(vcpu-0)” 那么,只要找到并打开安装目录下的 XXXX.vmx 文件,使用记事本打开后,在 smc.present = "TRUE" 后添加“smc.version = 0”(建议复制,不包括引号)后保存,问题即可解决. 相关链接 http://jingyan.baidu.com/article/ff411625b90

iOS开发中的那些的约定俗成(1)————《编写高质量iOS与OS X代码的52个有效方法》读书笔记(第一章)

iOS开发中的那些的约定俗成(1) ----<编写高质量iOS与OS X代码的52个有效方法>读书笔记(第一章) 前言 "我要成为一个高产的开发人员.""想要混的好,就得多努力." 写这些东西是因为毕竟看了书,但是看书看过去之后,也许印象不是很深刻,有些东西现在也理解不了,那我就把我理解的,现在就可以用到的东西,简单的写出来就好,让自己今后看到就能明白其中的意思. 还有就是锻炼一下表达,编辑能力,慢慢的提升自己,随时随地的都要有一个锻炼的心. 最后当然就

iOS开发ARC内存管理技术要点

本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇文章不是一篇标准的ARC使用教程,并假定读者已经对ARC有了一定了解和使用经验.详细的关于ARC的信息请参见苹果的官方文档与网上的其他教程:) 本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging 技术交流新QQ群:41

iOS开发中的ARC内存管理de技术要点

本文旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇文章不是一篇标准的ARC使用教程,并假定读者已经对ARC有了一定了解和使用经验.详细的关于ARC的信息请参见苹果的官方文档与网上的其他教程:) 本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging ARC的本质 ARC是编译器(时)特性,而不是运行时

(转)iOS开发ARC内存管理技术要点

转自:http://www.cnblogs.com/flyFreeZn/p/4264220.html 本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇文章不是一篇标准的ARC使用教程,并假定读者已经对ARC有了一定了解和使用经验.详细的关于ARC的信息请参见苹果的官方文档与网上的其他教程:) 本文的主要内容: ARC的本质 ARC的开启与关闭 A