随笔分类 - OC
摘要:iOS 性能调试instrumentInstrumentInstrument之Core Animation工具避免图层混合①、确保控件的opaque属性设置为true,确保backgroundColor和父视图颜色一致且不透明;②、如无特殊需要,不要设置低于1的alpha值;③、确保UIImage没有alpha通道;避免临时转换①、确保图片大小和frame一致,不要在滑动时缩放图片;②、确保图片颜...
阅读全文
摘要:title: iOS Crashcategories: iOS优化Understanding and Analyzing Application Crash Reports稳定性APP 稳定性方面主要是减少异常及崩溃,针对这部分,可以从 Category、Method Swizzling 以及静态分析来入手。1.1 Category 分析Category可以为现有的类添加方法,但是Category...
阅读全文
摘要:使用 UITableView 时,发现滚动时的性能还不错,但来回滚动时,第一次显示的图像不如再次显示的图像流畅,出现前会有稍许的停顿感。于是猜想显示过的图像肯定是被缓存起来了,查了下文档后发现果然如此。在《Improving Image Drawing Performance on iOS》一文中找到了一些提示:原来在显示图像时,解压和重采样会消耗很多 CPU 时间;而如果预先在一个 bitmap...
阅读全文
摘要:一、接口请求优化在工程项目中,多个一级界面包含状态,如:服务入口的动态配置,未读消息数量,图片文字等,因此产品设计要每次切换 tab 时都请求数据,及时的更新页面状态。在实际开发中,频繁的调用接口,频繁的刷新界面显然是影响用户体验的,所以需要进行优化,优化的思路有以下几点:使用 loading + 默认灰色矩形视图;每隔 15s 以上才请求一次,防止频繁触发请求@property (nonatom...
阅读全文
摘要:一、Cell 复用在可见的页面会重复绘制页面,每次刷新显示都会去创建新的 Cell,非常耗费性能。解决方案:创建一个静态变量 reuseID,防止重复创建(提高性能),使用系统的缓存池功能。static NSString * CELL_RUID = @"CELL"; // 调用次数太多,static 保证只创建一次 reuseID,提高性能- (UITableViewCell *)tableV...
阅读全文
摘要:一、探究NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:@"yyyy-MM-dd"];NSString * current = [dateFormatter stringFromDate:[NSDate date]];关于 NSDateFormatter 创建...
阅读全文
摘要:一、图片显示图片的显示分为三步:加载、解码、渲染。解码和渲染是由 UIKit 进行,通常我们操作的只有加载。以 UIImageView 为例。当其显示在屏幕上时,需要 UIImage 作为数据源。UIImage 持有的数据是未解码的压缩数据,能节省较多的内存和加快存储。当 UIImage 被赋值给 UIImage 时(例如 imageView.image = image;),图像数据会被解码,变成...
阅读全文
摘要:一、Crash类型crash 一般产生自 iOS 的微内核 Mach,然后在 BSD 层转换成 UNIX SIGABRT 信号,以标准 POSIX 信号的形式提供给用户。NSException 是使用者在处理 App 逻辑时,用编程的方法抛出。iOS 端的 crash 分为三类:Mach 异常:EXC_CRASHUNIX 信号:SIGABRT系统崩溃而引起的程序 NSException 异常退出常...
阅读全文
摘要:代码的组织结构,以及为何要这样写。那些场景适合使用子控制器,那些场景应该避免使用子控制器?分离UITableView的数据源和UITableViewDataSource协议。MVVM的重点是ViewModel,不是响应函数式。MVVM中,ReactiveCocoa或RXSwift实现数据绑定的带来的弊端。用策略模式替代if-else或switch这样判断比较多,不利于代码阅读的分支结构。并在特定场...
阅读全文
摘要:NSProxy 是一个实现了 NSObject 协议类似于 NSObject 的根类。NS_ROOT_CLASS@interface NSProxy { Class isa;}苹果的官方文档:Typically, a message to a proxy is forwarded to the real object or causes the proxy to load (or tra...
阅读全文
摘要:官方的解释:The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-memory filtering.NSPredicate 类是用来定义逻辑条件,用来有约束的获取内存中的对象或过滤搜索。简而言之:只选取符合条件的对象。一、基...
阅读全文
摘要:一、NSDictionary 1.1 使用自定义对象 key Dictionaries manage pairs of keys and values. A key value pair within a dictionary is called an entry. Each entry consi
阅读全文
摘要:一、简介C++ 是基于静态类型,而 Objective-C 是基于动态运行时类型。用 C++ 编写的程序通过编译器直接把函数地址硬编码进入可执行文件;Objective-C 则不能,而是在程序运行的时,利用 Runtime 根据条件判断作出决定。函数标识与函数实现之间的关联可以动态修改。OC 把一些决定工作从编译链接推迟到运行时,有很多类和成员变量在编译时是不知道的,而在运行时,编写的代码会转换成...
阅读全文
摘要:一、umbrella framework将几个已经封装好的 framework 封装成一个,封装的这种 framework 就是 umbrella framework。Apple 的官方文档中明确提到了不建议自己去创建 umbrellaframework。首先先引入 Apple 的 Guidelins for Creating Frameworks 的一段:Don’t Create Umbrell...
阅读全文
摘要:Lexical or Preprocessor Issue Umbrella header for module 'xxx' does not include header 'xxx.h' framework 的文件明明被主工程引用了,但是在编译的时候依旧抛出上面的警告。 一、什么是 umbrell
阅读全文
摘要:身份证识别,又称 OCR 技术。OCR 技术是光学字符识别的缩写,是通过扫描等光学输入方式将各种票据、报刊、书籍、文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术。一、实现原理及步骤灰度化处理将指定图片每个像素点的 RGB 三个分量通过一定的算法计算出该像素点的灰度值,使图像只含亮度而不含色彩信息。二值化将经过灰度化处理的图片转换为只包含黑色和白色两...
阅读全文
摘要:Xcode6 之前会在 Supporting Files 文件夹下自动生成一个“工程名-PrefixHeader.pch”的预编译头文件,pch 头文件的内容能被项目中的其他所有源文件共享和访问。Xcode 6.0之后则需要手动创建。一、作用①、定义全局性宏;②、引用全局性头文件;③、根据运行环境,自动打开或者关闭日志输出功能。二、优点①、PCH 文件的内容能被项目中的其他所有文件共享和访问,其它...
阅读全文
摘要:一、前言1.1 程序和进程广义上的程序就是一个静态的可执行文件,是由一个已经编译好的指令和数据集合的一个文件。就像通过 Xcode 编译好的 Mach-O 文件。而进程则是一个动态的概念,是程序的运行时的一个过程。1.2 虚拟内存每个进程内部都是使用的逻辑地址空间,这个逻辑地址与物理 RAM 之间存在着映射关系,这个映射是以 page 为单位的。这种映射关系不一定是 1 对 1 的,有可能某个逻辑...
阅读全文
摘要:一、常规文件操作 常规文件操作(read/write)有那几个重要步骤: 进程发起读文件请求 内核通过查找进程文件符表,定位到内核已打开文件集上的文件信息,从而找到此文件的 inode inode 在 address_space 上查找要请求的文件页是否已经缓存在内核页高速缓冲中。如果存在,则直接返
阅读全文

浙公网安备 33010602011771号