iOS进阶
文章平均质量分 90
继续深化内功
HiccupTang
iOS developer
展开
-
iOS进阶 - pod install 与 pod update 读这一篇就够了
很多人使用CocoaPods时往往认为pod install只是在首次配置项目的时候使用的,而pod update是稍后更新库的时候使用的。但是事实并非如此。这篇文章的目的是阐述清楚什么时候使用pod install命令,什么时候使用pod update命令。原创 2021-01-26 10:58:12 · 2596 阅读 · 3 评论 -
iOS进阶 - GCD总结
详细清晰的关于 GCD 的总结:GCD 任务和队列、 GCD 的使用步骤、GCD 的基本使用(六种组合不同区别,队列嵌套情况区别,相互关系形象理解)、GCD 线程间的通信、GCD 的其他方法(栅栏方法等)原创 2021-01-26 17:18:56 · 184 阅读 · 3 评论 -
iOS进阶 - APP冷启动优化实践
前言当用户按下Home键的时候,iOS的APP并不会马上被kill掉,还会继续存活若干时间。理想情况下,用户点击APP的图标再次回来的时候,APP几乎不需要做什么,就可以还原带退出前的状态,继续为用户服务。这种持续存活的情况下启动APP,我们称为热启动,相对而言冷启动就是APP被kill掉以后一切从头开始启动的过程。我们这里只讨论APP冷启动的情况。对于冷启动来说,启动时间是指从用户点击APP那一刻开始到用户看到第一个界面这中间的时间。我们进行优化的时候,我们将启动时间分为 pre-main 时间和原创 2021-01-25 16:06:18 · 532 阅读 · 2 评论 -
iOS进阶 - Cell复用原理和源码分析
简介在我们的日常开发中,绝大多数情况下只要详细阅读类头文件里的注释,组合UIKit框架里的大量控件就能很好的满足工作的需求。但仅仅会使用UIKit里的控件还远远不够,假如现在产品需要一个类似 Excel 样式的控件来呈现数据,需要这个控件能上下左右滑动,这时候你会发现UIKit里就没有现成的控件可用了。UITableView 可以看做一个只可以上下滚动的 Excel,所以我们的直觉是应该仿写 UITableView 来实现这个自定义的控件。这篇文章我将会通过开源项目 Chameleon 来分析UITab原创 2021-01-25 11:09:55 · 420 阅读 · 2 评论 -
如何去处理学习的深度与广度?
科学的个人知识管理 深度(专家?) 有时候跟同事、朋友、讨论伙伴聊天的时候谈到深度,具体什么才是深度,怎么达到这样的深度;借用伟大的丹麦物理学家、量子物理学家尼尔斯.玻尔说“专家就是那些在很窄的领域把所有能犯的错误都犯了的人。 An expert is a person who has made all the mistakes that can be made in a very narrow field。” 在套用一个知乎网友的回答: 知识深度创造价值...原创 2021-01-23 10:06:00 · 2611 阅读 · 2 评论 -
iOS进阶 - 性能优化
1.造成tableView卡顿的原因有哪些? 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell。 如果重用cell,为cell创建一个ID,每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到原创 2021-01-21 14:15:01 · 247 阅读 · 2 评论 -
iOS进阶 - 多线程
1.进程与线程进程: 1.进程是一个具有一定独立功能的程序关于某次数据集合的一次运行活动,它是操作系统分配资源的基本单元. 2.进程是指在系统中正在运行的一个应用程序,就是一段程序的执行过程,我们可以理解为手机上的一个app. 3.每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内,拥有独立运行所需的全部资源 线程 1.程序执行流的最小单元,线程是进程中的一个实体. 2.一个进程要想执行任务,必须至少有一条线程.应用程序启动的时候,系统会默认开启一条线程,也就是主线程 进程和原创 2021-01-21 14:02:35 · 410 阅读 · 2 评论 -
iOS进阶 - RunLoop
1.Runloop 和线程的关系? 一个线程对应一个 Runloop。 主线程的默认就有了 Runloop。 子线程的 Runloop 以懒加载的形式创建。 Runloop 存储在一个全局的可变字典里,线程是 key ,Runloop 是 value。 2.RunLoop的运行模式 RunLoop的运行模式共有5种,RunLoop只会运行在一个模式下,要切换模式,就要暂停当前模式,重写启动一个运行模式 - kCFRunLoopDefaultMode, Ap原创 2021-01-21 14:08:39 · 169 阅读 · 2 评论 -
iOS进阶 - Runtime
1.Category 的实现原理? Category 实际上是 Category_t的结构体,在运行时,新添加的方法,都被以倒序插入到原有方法列表的最前面,所以不同的Category,添加了同一个方法,执行的实际上是最后一个。 Category 在刚刚编译完的时候,和原来的类是分开的,只有在程序运行起来后,通过 Runtime ,Category 和原来的类才会合并到一起。 2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型? isa 等价于 is kind o原创 2021-01-21 14:19:29 · 110 阅读 · 2 评论