自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(18)
  • 收藏
  • 关注

转载 【转载】iOS App 性能优化总结

一、首页启动速度启动过程中做的事情越少越好(尽可能将多个接口合并)不在UI线程上作耗时的操作(数据的处理在子线程进行,处理完通知主线程刷新节目)在合适的时机开始后台任务(例如在用户指引节目就可以开始准备加载的数据)尽量减小包的大小优化方法:量化启动时间启动速度模块化辅助工具(友盟,听云,Flurry)二、页面浏览速度json的处理(iO...

2016-03-23 21:42:00 116

转载 第17条:实现description方法

平常我们自定义的类中,如果我们直接打印我们的对象它会输出<Object:0x*****>,并不是我们要的,这样并没有什么用,所以当我们重写description的时候才可能满足我们调试的需求。description-(NSString)description{  return[NSString stringWithFormat:@"%@: %p,%@,%@...

2016-03-23 11:19:00 115

转载 第16条:提供“全能初始化方法”

为对象提供必要信息以便其完成工作的初始化方法叫做“全能初始化方法”,也可以称为“指定初始化方法”。例如UITableViewCell中的初始化- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier...

2016-03-23 11:03:00 96

转载 (第3章:接口与API设计)第15条:用前缀避免命名空间冲突

要点  选择与你的公司、应用程序或二者皆有关联之名称作为类名的前缀,并在所有的代码中使用这一前缀。(不仅是类名,应用程序中的所有名称都应加前缀,包括分类,第三方库名,第三方类的分类名、私有方法加p_)      如 EOCSoundPlayer、XYZLibrary、NSString(ABC_Http),p_privateMethod.若自己所开发的程序库中用到了...

2016-03-23 10:51:00 130

转载 第14条:理解“类对象”的用意

要点每个实例都有一个指向Class对象的指针,用以表明其类型,而这些Class对象则构成了类的继承体系。如果对象类型无法在编译期确定,那么就应该使用类型信息查询方法来探知。尽量使用类型信息查询方法来确定对象类型,而不要直接比较类对象,因为某些对象可能实现了消息转发功能。转载于:https://www.cnblogs.com/lanyayue/p/5296205.h...

2016-03-19 20:20:00 67

转载 第13条:用“方法调配技术”调试“黑盒方法”

要点在运行期,可以向类中新增或替换选择子所对应的方法实现。使用另一份实现来替换原有的方法实现,这道工序叫做“方法调配”,开发者常用此技术向原有实现中添加新功能。一般来说,只有调试程序的时候才需要在运行期修改方法实现,这种做法不宜滥用。转载于:https://www.cnblogs.com/lanyayue/p/5296200.html...

2016-03-19 20:19:00 86

转载 第12条:理解消息转发机制

  要点若对象无法响应某个选择子,则进入消息转发流程。通过运行期的动态方法解析功能,我们可以在需要用到某个方法时再将其加入类中。对象可以把其无法解读的某些选择子转交给其他对象来处理。经过上述两步之后,如果还是没办法处理选择子,那就启动完整的消息转发机制。转载于:https://www.cnblogs.com/lanyayue/p/5296198.html...

2016-03-19 20:18:00 73

转载 第11条:理解objc_msgSend的作用

  要点消息由接收者、选择子及参数构成。给某对象“发送消息”(invoke a message)也就相当于在该对象上“调用方法”(call a method)。发给某对象的全部消息都要由“动态消息派发系统”(dynamic message dispatch system)来处理,该系统会查出对应的方法,并执行其代码。转载于:https://www.cnblogs.co...

2016-03-19 20:14:00 77

转载 第10条:在既有类中使用关联对象存放自定义数据

下列方法可以管理关联对象:void objc_setAssociatedObject(id object, void*key, id value, objc_AssociationPolicy policy)  此方法以给定的键和策略为某对象设置关联对象值。id objc_getAssociatedObject(id object, void*key)  ...

2016-03-19 20:10:00 56

转载 第9条:以“类族模式”隐藏实现细节

  要点  类族模式可以把实现细节隐藏在一套简单的公共接口后面。 系统框架中经常使用类族。 从类族的公共抽象基类中继承子类时要当心,若有开发文档,则应首先阅读。转载于:https://www.cnblogs.com/lanyayue/p/5296080.html...

2016-03-19 19:36:00 71

转载 第8条:理解“对象等同性”这一概念

  要点  若想检测对象的等同性,请提供“isEqual:”与hash方法。 相同的对象必须具有相同的哈希码,但是两个哈希码相同的对象却未必相同。 不要盲目的逐个检测每条属性,而是应该依照具体需求来制定检测方案。 编写hash方法时,应该使用计算速度快而且哈希码碰撞几率低的算法。转载于:https://www.cnblogs.com/lanyayu...

2016-03-18 22:14:00 134

转载 第7条:在对象内部尽量直接访问实例变量

self.firstName=@"aaa";_fristName=@"aaa";这两种写法有几个区别  由于不经过Objective-C的“方法派发”(method dispatch),所以直接访问实例变量的速度当然比较快。在这种情况下,编译器所生成的代码会直接方位保存对象实例变量的那块内存。直接方位实例变量时,不会调用其“设置方法”,这就绕过了为相关属性所定义的“内...

2016-03-18 22:05:00 64

转载 (第2章-对象、消息、运行期)第6条:理解“属性”这一概念

属性可以拥有的特质分为四类:原子性  在默认情况下,由编译器所合成的方法会通过锁定机制确保其原子性(atomicty)。如果属性具备nonatomic特质,则不使用同步锁。请注意,尽管没有名为“atomic”的特质(如果某属性不具备nonatomic特质,那它就是“原子的”(atomic)),但是仍然可以在属性特质中写明这一点,编译器不会报错。若是自己定义存取方法,那么就应该遵从...

2016-03-18 21:47:00 67

转载 第5条:用枚举表示状态、选项、状态码

  要点应该用枚举来表示状态机的状态、传递给方法的选项以及状态码等值,给这些值起个易懂的名字。如果把传递给某个方法的选项表示为枚举类型,而多个选项又可同时使用,那么就将各选项值定义为2的幂,以便通过按位或操作将其组合起来。用NS_ENUM与NS_OPTIONS 宏来定义枚举类型,并指明其底层数据类型。这样做可以确保枚举是用开发者所选的底层数据类型实现出来的,而不会采用编译...

2016-03-18 13:27:00 177

转载 第4条:多用类型常量,少用#define预处理指令

  要点不要用预处理指令定义常量。这样定义出来的常量不含类型信息,编译器只是会在编译前据此执行查找与替换操作。即使有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中的常量值不一致。在实现文件中使用static const 来定义“只在编译单元内可见的常量”(translation-unit-specific-constant)。由于此类常量不在全局符号表中,所...

2016-03-18 13:19:00 93

转载 第3条:多用字面量语法,少用与之等价的方法

  要点  应该使用字面量语法来创建字符串、数值、数组、字典。与创建此类对象的常规方法相比,这么做更加简明扼要。  应该通过取下标操作来访问数组下标或字典中的键所对应的元素。 用字面量语法创建数组或字典时,若值中有nil,则会抛出异常。因此,务必确保值里不含nil。转载于:https://www.cnblogs.com/lanyayue/p/5291633....

2016-03-18 13:05:00 69

转载 第2条:在类的头文件中尽量少引入其他头文件

  要点  除非确有必要,否则不要引入头文件。一般来说,应在某个类的头文件中使用向前声明来提及别的类,并在实现文件中引入那些类的头文件。这样做可以尽量降级类之间的耦合。  有时无法使用向前声明,比如要声明某个类遵循一项协议。这种情况下,尽量把“该类遵循某协议”的这条声明移至“class-continuation分类”中。如果不行的话,就把协议单独放在一个头文件中,然后将其引入...

2016-03-18 12:33:00 144

转载 (第1章-熟悉Objective-C)第1条:了解Objective-C语言的起源

  要点Objective-C为C语言添加了面向对象特性,是其超集。Objective-C使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型。接收一条消息之后,究竟应执行何种代码,由运行期环境而非编译器来决定。理解C语言的核心概念有助于写好Objective-C程序。尤其要掌握内存模型和指针。转载于:https://www.cnblogs.com/lanyay...

2016-03-18 12:22:00 164

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除