IOS 知识点随笔

1、断点续传

断点续传的原理:每次在向服务器请求下载数据的同时,要告诉服务器是从整个下载文件的数据流的某个位置开始下载,然后服务器就返回从那个位置开始的数据流。

//创建请求对象---关键点

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

//设置请求头信息,说明只需要请求该次源的一部分数据

/*

    bytes = 0-1000 表示下载0~1000的数据

    bytes = 0-     表示从0开始下载直到下载完毕

    bytes = 100-   表示从100开始下载直到下载完毕

*/

NSString *range = [NSString stringWithFormat:@"bytes=%zd-",self.currentSize];

[request setValue:range forHTTPHeaderField:@"Range”];

2、IOS缓存策略

缓存的本质是用空间换取时间

NSURLCache是iOS系统提供的内存以及磁盘的综合缓存机制,NSURLCache对象被存储沙盒中Library/cache目录下。

AFNetworking中AFImageDownloader使用AFAutoPurgingImageCache和NSURLCache管理图片缓存。

3、UITableView载优化

cell的复用:

cell的高度:提前计算高度

cell的渲染:渲染最好时的操作之一就是混合(blending)了,所以我们不要使用透明背景,将cell的opaque值设为Yes,背景色不要使用clearColor,尽量不要使用阴影渐变等;减少subviews的个数和层级;避免CALayer特效(shadowPath):不要给cell动态添加subView,在初始化cell的时候就将所有需要展示的添加完毕,然后根据需要来设置hide属性显示和隐藏。

异步化UI,不要阻塞主线程.

滑动时按需加载对应的内容

4、网络优化

最小化应用使用的专有域名的数量

如果子域名数量上升至两位数,我们需要仔细考虑这方面的优化了

DNS预先下载

SSL握手时间

如果应用中所有连接均是通过 TLS/SSL 的(使用HTTPS)

最大程度减少应用发起的连接数,也需要减少应用连接的独有域名的数量

请求结束后不要关闭 HTTP/S 连接

为所有的 HTTP/S 的请求添加头 Connection: keep-alive

如果适用,当网络可用时,支持同步的离线存储

5、IOS-Runtime

动态交换两个方法的实现

动态添加方法

动态添加属性

6、IOS-Runloop

RunLoop是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行;而且在没有事件处理的时候,会进入睡眠模式,从而节省CPU资源,提高程序性能。

什么时候使用run loop

仅当在为你的程序创建辅助线程的时候,你才需要显式运行一个run loop。

对于辅助线程,你需要判断一个run loop是否是必须的。如果是必须的,那么你要自己配置并启动它。你不需要在任何情况下都去启动一个线程的run loop。

例如:使用端口或自定义输入源来和其他线程通信;使用线程的定时器;Cocoa中使用任何performSelector…的方法;使线程周期性工作。

如果你决定在程序中使用run loop,那么它的配置和启动都很简单。和所有线程编程一样,你需要计划好在辅助线程退出线程的情形。让线程自然退出往往比强制关闭它更好。

7、iOS热更新实现方式

1、JSPatch:热更新时,从服务器拉去js脚本,理论上可以修改和新建所有的模块,但是不建议这样做,用来做紧急的小需求和 修复严重的线上bug。

2、lua脚本:从服务器拉去lua脚本,游戏开发经常用到。

3、Weex:跨平台,weex基于vue.js,weex是阿里开源的技术。

4、React Native:不像Weex能一套代码多端运行,适配iOS和android需要自己分别做修改。React Native和Weex都 可以进行热更新,但都不能修改原生OC代码。JSPatch、lua 配合React Native可以让一个原生APP时刻处于可扩展可修改的状态。

5、Hybrid:像PhoneGap之类的框架, 基本概念和web差不多, 通过更新js/html来实现动态化,没有原生的效果流畅。

6、rollout.io:Rollout紧急修复线上bug。后端有相关的管理页面,要翻墙才能使用。

7、DynamicCocoa:滴滴iOS的一个框架,与JSPatch比更加智能化,用OC在XCode中写完代码,用工具可以自动生成可以更新的js文件。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.调用系统相册、相机发现进入系统界面后标题显示为英文如“photos”,“cancle”, 要想改为中文需要在工...
    Amanda_Lhy阅读 140评论 0 0
  • 1.选错专业,背后的逻辑 别说专业是很平常的一件事情,是这个时代的问题,教育体制的问题。 2.手上拿了一杯水,接下...
    CNBLUEone阅读 129评论 0 0
  • 通过认识到您的真正优先事项来消除不必要的压力。 今天的创业母亲在成功的道路上面临着许多挑战。美麗的妻子,充满爱心的...
    Oscarwsh楷恆阅读 88评论 0 0
  • “你这么大了,不会没有喜欢的女孩子吧?” “当然有啊!” "如果不是我想听到的答案那就别说了" “我就喜欢你这样的...
    沐U阅读 189评论 0 0
  • 伴着淅淅沥沥的雨声入眠, 雨是紫色的, 梦是粉红色的。 大雪纷飞的夜晚, 黄色的壁炉, 木屋的窗边, 黑色的眼睛映...
    Faro阅读 297评论 0 0