摘要: 一、UCA 简介 Unicode Collation Algorithm (UCA) 是 Unicode 规定的如何比较两个字符串大小的算法,也是事实上的标准。我们先来看下它的几个特征。 1.1 Multi-Level Comparison 为了处理字符串比较的复杂性,UCA 采用了多级比较的方法。 阅读全文
posted @ 2017-05-30 10:36 花老🐯 阅读(2674) 评论(0) 推荐(0) 编辑

摘要: 一、一个具体的例子引发的问题 当今是国际化的时代,多种语言可能同时显示在屏幕上。比如一个人可能喜欢听华语歌、英文歌、韩文歌和日语歌,又比如他的联系人中有中国人、英国人、日本人、韩国人以及有英文名字的中国人。 在这种情况下,他的手机上需要维护一个列表,每一项可能是中文、韩文、英文和日文。在许多情况下需 阅读全文
posted @ 2017-05-29 23:56 花老🐯 阅读(13955) 评论(0) 推荐(1) 编辑

2020年3月27日

摘要: 如上所示,scroll 为屏幕高度,并透过了顶部和底部的 Bar。 若是相对于 frameLayoutGuide 布局 let topView = UIView.init() topView.backgroundColor = .blue topView.translatesAutoresizingMaskIntoConstraints = false scrol... 阅读全文
posted @ 2020-03-27 18:11 花老🐯 阅读(348) 评论(0) 推荐(0) 编辑

2020年3月9日

摘要: 根据文档,当 minimumScaleFactor 设置为小数,并且 adjustsFontSizeToFitWidth 为 true时,系统会调整 fontsize 来尽可能确保可以显示完整的文字。Normally, the label text is drawn with the font you specify in the font property. If this property i... 阅读全文
posted @ 2020-03-09 11:06 花老🐯 阅读(705) 评论(0) 推荐(0) 编辑

2019年8月31日

摘要:  阅读全文
posted @ 2019-08-31 23:34 花老🐯 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 问题在某一次启动速度优化中,发现最开始的某个 runLoop 中,一个runLoop 耗时很长。发现一个 KVO 变量的初始化消耗了13ms之久,这对启动速度是不可接受了。源码分析用 Instrument 看第一次耗时,发现调用了 method_exchange,可能是 KVO的内部实现。看 RunTime源码,这个方法会清空所有缓存中的方法列表,比较耗时。 阅读全文
posted @ 2019-08-31 23:32 花老🐯 阅读(384) 评论(0) 推荐(0) 编辑

2019年6月14日

摘要: 这个 session 讲了模拟器的一些知识,帮助我们更加好的利用模拟器进行开发。模拟器是什么从功能上理解模拟器让我们能在 MacOS 上模拟 iOS、watchOS 和 tvOS。相比真实的设备,有更多的内存和 CPU,并且能够同时运行多个。作为工程师,停留在这个水平显然是不够的。 从技术上理解Simulator is iOS, watchOS, or tvOS userspace runnin... 阅读全文
posted @ 2019-06-14 09:13 花老🐯 阅读(629) 评论(0) 推荐(0) 编辑

2019年4月20日

摘要: _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... 阅读全文
posted @ 2019-04-20 12:50 花老🐯 阅读(347) 评论(0) 推荐(0) 编辑
摘要:  阅读全文
posted @ 2019-04-20 12:49 花老🐯 阅读(111) 评论(0) 推荐(0) 编辑
摘要:  阅读全文
posted @ 2019-04-20 12:49 花老🐯 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 可以看到,在queue里的任务,不仅仅是一个函数,也可以是一个其他的queue。 下面是一个例子。全局队列的处理一般一个全局队列有多个线程,这些个线程会遍历并处理链表里的任务。对于全局队列,当一个任务被抛进来后,会尽快处理掉。如果有空闲线程,那么这个空闲线程会处理这个任务。如果没有空闲线程,那么会新开一个线程来处理。 空闲线程来自哪里呢? do { _dispatch_... 阅读全文
posted @ 2019-04-20 11:10 花老🐯 阅读(387) 评论(0) 推荐(0) 编辑
摘要: Dispatch 源代码版本是libdispatch-84.5.5会根据这个结构来分析dispatch_queue 对应的代码实现参考GCD源码分析3 —— dispatch_queue篇深入浅出GCD之dispatch_queuelibdispatch-84.5.tar.gz 阅读全文
posted @ 2019-04-20 09:30 花老🐯 阅读(149) 评论(0) 推荐(0) 编辑

导航