第9条:以“类族模式”隐藏实现细节 类族模式可以把实现细节隐藏在一套简单的公共接口后面 系统框架中经常使用类族 从类族的公共抽象基类中继承子类时要当心,若有开发文档,则应首先阅读 “类族”(class cluster) is a  模式(pattern),将实现细节隐藏在抽象基类后面,以保持接口间接 Objective-C 的框架中普遍使用此模式.比如UIKit框架中 有一个 UIButton的类. + (UIButton *) buttonWithType:(UIButtonType)type…
Objective-C动态消息系统(参见第11条)的工作方式决定了其不可能实现真正的私有方法或私有实例变量. 匿名分类的特点: 与普通的分类不同,它必须定义在其所接续的那个类的实现文件里. 唯一能声明实例变量的分类. 而该分类没有特定的实现文件,其中的方法都应该定义在类的主实现文件里. 用法: 1.向类中新增实例变量. 2.在里面声明私有方法. 3.隐藏类所遵循的协议. 4.将主接口声明的“只读”属性弄成“可读写”…
第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减少类的使用者所需引入的头文件数量,减少编译时间. 2,解决了两个类互相引用的问题 有时无法使用向前声明,比如要声明某个类遵循一项协议.这种情况下,尽量把“该类遵循某 协议”的这条声明移至“class-continuation分类“中.如果不行的话,就把协议单独放在一个头文件中,然后将其引入.…
最新解决Chrome(版本76.0.3809.100) “请停用以开发者模式运行的扩展程序”的方法 最近在远景论坛上发现了最新的解决Chrome浏览器提示:请停用以开发者模式运行的扩展程序的问题.该方法只需要添加一条注册表即可,简单快捷,亲测可用.而在网上搜索的方法基本都失效了, 当然涉及到注册表问题,则只适用于Windows系统.以下是使用方法. 环境 系统环境:Windows 10 版本 1903(OS 内部版本 18362.239)Google Chrome:版本 76.0.3809.10…
微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 Android版飞机大战破解无敌模式手记 最近微信出了5.0,新增了游戏中心,并内置了一个经典游戏<飞机大战>.游戏其实很简单,但由于可以和好友一起竞争排名,一时间受到大家的追捧,小伙伴们进入“全民打飞机”时代. ios 版出来不久就被破解出了无敌模式.Android版出后好像一直风平浪静.周末无…
[Android]详解7.0带来的新工具类:DiffUtil 标签: diffutil 2017-04-17 18:21 226人阅读 评论(0) 收藏 举报  分类: Android学习笔记(94)    目录(?)[+]   本文出自: [张旭童的博客] 博客地址:http://blog.csdn.net/zxt0601/article/details/52562770 一 概述 DiffUtil是support-v7:24.2.0中的新工具类,它用来比较两个数据集,寻找出旧数据集—>新数据…
第四条:多用类型常量,少用#define预处理指令 使用#define 预处理的坏处:定义出来的常量没有类型信息,编译器只是会在编译前据此执行查找与替换操作.即使有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中的常量值不一致. 使用例如:static const NSTimeInterval kAnimationDuration = 0.3; 在实现文件中使用 static const 来定义“只在编译单元内可见的常量”.由于此类常量不再全局符号表中,所以无须为其名称加前缀.…
第三条:多用字面量语法,少用与之等价的方法 几个类:NSString  NSNumber  NSArray  NSDictionary 字面量语法是一种语法糖(syntactic sugar) NSString *someString = @"字符串字面量"; 字面量数值: NSNumber *someNumber = @1;   等价与   NSNumber *someNumber = [NSNumber numberWithInt:1]; NSNumber *intNumber =…
每个实例都有一个指向Class 对象的指针,用以表明其类型,而这些 Class 对象则构成了类的继承体系. 如果对象类型无法在编译期确定,那么就应该使用类型信息查询方法来探知. 尽量使用类型信息查询方法来确定对象类型,而不要直接比较类对象,因为某些对象可能实现了消息转发功能. 类型 id 能指代任意的Objective-C 对象类型,编译器假定 类型为 id 的对象 能响应所有消息 Objective-C 对象的本质 每个 Objective-C 对象实例都是指向某块内存数据的指针.,所以在声明…
11 条讲解了对象的消息传递机制 12条讲解对象在收到无法解读的消息之后会发生什么,就会启动“消息转发”(message forwarding)机制, 若对象无法响应某个选择子,则进入消息转发流程. 1,通过运行期的动态方法解析功能,可以在需要用到某个方法时再将其加入类中. 2,对象可以把其无法解读的某些选择子转交给其他对象来处理. 经过上述两步之后,如果还是没办法处理选择子,那就启动完整的消息转发机制. 动态方法解析 对象在收到无法解读的消息之后,首先调用其所属类的下列类方法 + (BOOL)…