Effective ObjectiveC 2.0 Note】的更多相关文章

[Effective ObjectiveC 2.0 Note] 1.The memory for objects is always allocated in heap space and never on the stack. 2.对于[NSArray arrayWithObjects:obj1,obj2,obj3,nil].当使用方法时,如果obj2为空,则只有obj1被插入.录使用Literals时,@[objc3,obj2,obj3],如果objc2为空,会抛出异常.dictionary…
1.在类的头文件中尽量少引入其他头文件 除非确有必要,否则不要引入头文件.一般来说,应在某个类的头文件中使用向前声明来提及别的类,并在实现文件中引入那些类的头文件.这样做可以尽量降低类之间的耦合(coupling). 有时无法使用向前声明(@class 类名)(.h文件在某个类引入类对象,.m实现#import类名),比如要声明某个类遵循一项协议.这种情况下,尽量把“该类遵循某协议”的这条声明移至“class-continuation分类”中.如果不行的话,就把协议单独放在一个头文件中,然后将其…
由于最近入职,公司安排自由学习,于是有时间将Effective Objective-C 2.0一书学习了一遍.由于个人知识面较窄,对于书中有些内容无法理解透彻,现将所学所理解内容做一遍梳理,将个人认为常用且重要的知识记录下来,以供日后参考. 1.在类的头文件中尽量少引入其他头文件 将头文件引入的时机尽量延后,在确有需要的时才引入(比如.m文件中).因为头文件中引入其他类头文件,会增加编译时间(可能是现在运行硬件比较好,所以对此点没啥感觉).在头文件中若要使用其他类,则用"向前声明"--…
1. Literal Syntax NSString *someString = @"Effective Objective-C 2.0"; NSNumber *someNumber = [NSNumber numberWithInt:1]; <=> NSNumber *someNumber = @1; // syntax also works for expressions int x = 5;float y = 6.32f;NSNumber *expressionNum…
感觉自己最近提升很慢了.然后去找了一些面试题看看.发现自己自大了.在实际开发中,让我解决bug.编写功能,我有自信可以完成.但是对项目更深层的思考,我却没有.为了能进到自己的目标BAT.也为了让自己更进一步发展.目前是计划是先看<Effective Objective-C 2.0>.<Objective-C高级编程:iOS与OS X多线程和内存管理>2本书,并将AFN.YYCache.SDWebImage等开源源码再认真看一遍,并写下自己的读后总结. <Effective O…
前一段时间将<Effective Objective-C 2.0>这本书浏览了一遍,说一下几个觉得比较有意思的知识点. 感觉这本书是ios开发必看的一本书,最基础的,以及稍微高阶一点的oc技术基本都涉及到了.如果书中的涉及的主题能够都掌握,那么绝对可以宣称自己是一个高级oc使用者. __objc_msgSend__ (原书Item 11) 如果有一个oc的方法调用id returnValue = [someObject messageName:parameter],那个这个调用最终会被编译器转…
Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法 作者:Matt Galloway(英) 译者:爱飞翔 出版社:机械工业出版社 出版年:2014-01 页数:209 定价:69.00元 ISBN:9787111451297 样章下载:http://wenku.it168.com/d_001381561.shtml内容简介:         本书是世界级C++开发大师Scott Meyers亲自担当顾问编辑的"Effective Software…
“类族”(class cluster)是一种很有用的模式(pattern),可以隐藏“抽象基类”(abstract base class)背后的实现细节.Objective-C的系统框架中普遍使用此模式. 创建类族 现在举例来演示如何创建类族.假设有一个处理雇员的类,每个雇员都有“名字”和“薪水”这两个属性,管理者可以命令其执行日常工作.但是,各种雇员的工作内容却不同.经理在带领雇员做项目时,无须关心每个人如何完成其工作,仅需指示其开工即可. 首先要定义抽象基类: typedef NS_ENUM…
用Objective-C等面向对象语言编程时,“对象”(object)就是“基本构造单元”(building block),开发者可以通过对象来存储并传递数据.在对象之间传递数据并执行任务的过程就叫做“消息传递”(Messaging). “属性”(property)是Objecive-C的一项特性,用于封装对象中的数据. 当应用程序运行起来以后,为其提供相关支持的代码叫做“Objective-C运行期环境”(Objective-C runtime),它提供了一些使得对象之间能够传递消息的重要函数…
1.多用类型常量,少用#define预处理指令 不要用预处理指令定义常量.这样定义出来的常量不含类型信息,编译器只是会在编译前据此执行查找与替换操作.即使有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中的常量值不一致. 在实现文件中使用static const来定义“只在编译单元内可见的常量”(translation-unit-specific constant).由于此类常量不在全局符号表中,所以无须为其名称加前缀. 在头文件中使用extern来声明全局常量,并在相关实现文件…