摘要:
一、UCA 简介 Unicode Collation Algorithm (UCA) 是 Unicode 规定的如何比较两个字符串大小的算法,也是事实上的标准。我们先来看下它的几个特征。 1.1 Multi-Level Comparison 为了处理字符串比较的复杂性,UCA 采用了多级比较的方法。 阅读全文
摘要:
一、一个具体的例子引发的问题 当今是国际化的时代,多种语言可能同时显示在屏幕上。比如一个人可能喜欢听华语歌、英文歌、韩文歌和日语歌,又比如他的联系人中有中国人、英国人、日本人、韩国人以及有英文名字的中国人。 在这种情况下,他的手机上需要维护一个列表,每一项可能是中文、韩文、英文和日文。在许多情况下需 阅读全文
摘要:
如上所示,scroll 为屏幕高度,并透过了顶部和底部的 Bar。 若是相对于 frameLayoutGuide 布局 let topView = UIView.init() topView.backgroundColor = .blue topView.translatesAutoresizingMaskIntoConstraints = false scrol... 阅读全文
摘要:
根据文档,当 minimumScaleFactor 设置为小数,并且 adjustsFontSizeToFitWidth 为 true时,系统会调整 fontsize 来尽可能确保可以显示完整的文字。Normally, the label text is drawn with the font you specify in the font property. If this property i... 阅读全文
摘要:
问题在某一次启动速度优化中,发现最开始的某个 runLoop 中,一个runLoop 耗时很长。发现一个 KVO 变量的初始化消耗了13ms之久,这对启动速度是不可接受了。源码分析用 Instrument 看第一次耗时,发现调用了 method_exchange,可能是 KVO的内部实现。看 RunTime源码,这个方法会清空所有缓存中的方法列表,比较耗时。 阅读全文
摘要:
这个 session 讲了模拟器的一些知识,帮助我们更加好的利用模拟器进行开发。模拟器是什么从功能上理解模拟器让我们能在 MacOS 上模拟 iOS、watchOS 和 tvOS。相比真实的设备,有更多的内存和 CPU,并且能够同时运行多个。作为工程师,停留在这个水平显然是不够的。 从技术上理解Simulator is iOS, watchOS, or tvOS userspace runnin... 阅读全文
摘要:
_dispatch_main_q也就是主要主队列,一定运行在主线程里。 // 6618342 Contact the team that owns the Instrument DTrace probe before renaming this symbolstruct dispatch_queue_s _dispatch_main_q = { .do_vtable = &_dispatc... 阅读全文
摘要:
可以看到,在queue里的任务,不仅仅是一个函数,也可以是一个其他的queue。 下面是一个例子。全局队列的处理一般一个全局队列有多个线程,这些个线程会遍历并处理链表里的任务。对于全局队列,当一个任务被抛进来后,会尽快处理掉。如果有空闲线程,那么这个空闲线程会处理这个任务。如果没有空闲线程,那么会新开一个线程来处理。 空闲线程来自哪里呢? do { _dispatch_... 阅读全文
摘要:
Dispatch 源代码版本是libdispatch-84.5.5会根据这个结构来分析dispatch_queue 对应的代码实现参考GCD源码分析3 —— dispatch_queue篇深入浅出GCD之dispatch_queuelibdispatch-84.5.tar.gz 阅读全文