戴铭的博客 - 星光社

戴铭的博客 - 星光社

一个人走得快,一群人走的远

WWDC 2021 Day1 笔记
WWDC开始了,一周时间会有大量Session可学习,这个页面https://github.com/twostraws/wwdc 收集了来自社区的各种WWDC活动、新闻和教程的链接,随着WWDC的进行,页面内容会不断更新,去年2020年的汇总页在这里https://github.com/twostraws/wwdc/blob/3d3b093218af06465b6b268b23e13e2ad6e2d9f8/README.md 。Apple官方收集的开发者组织活动页面是https://developer.apple.com/wwdc21/beyond-wwdc/ ,其中有SwiftGG翻译...
A站 的 Swift 实践
文章已发在快手大前端公众号,欢迎关注,文章地址如下: A站 的 Swift 实践 —— 上篇 A站 的 Swift 实践 —— 下篇 新文章写得贼累。完美错过了一览祖国大好人海的机会,TIANROAST🦔咖啡也没喝成,新买Switch怪物猎人崛起也仅限于炎火村。如果喜欢的话,求转发、“在看”和一个大大的赞。 下面是正文内容,我转到博客里来。 背景介绍 AcFun俗称为“A站”,作为一款二次元内容社区产品,以“认真你就输了”为文化导向,倡导轻松欢快的亚文化。AcFun涵盖了中长视频,小视频,番剧,文章等众多内容,支撑这些内容的大部分功能都选择了用Swift开发,早在2019年,AcF...
深入剖析 JavaScript 编译器/解释器引擎 QuickJS - 多了解些 JavaScript 语言
介绍最近在做 JavaScript 和 Native 打交道的工作,虽然6年前服务端和前端包括 JavaScript 经验也有些,不过如今前端标准和前端引擎也发展了很多,这里做个记录吧。本文会着重介绍 QuickJS,其中会针对 js 语言的一些特性来看这些特性在 QuickJS 是如何解释执行和优化的,能够加深对 js 语言的理解。QuickJS 是在 MIT 许可下发的一个轻量 js 引擎包含 js 的编译器和解释器,支持最新 TC39 的 ECMA-262 标准。QuickJS 和其它 js 引擎的性能对比,可以参看 QuickJS 的 benchmark 对比结果页,从结果看,J...
App 启动提速实践和一些想法
前言启动是门面,好的印象也助于留存率提高。苹果也在系统启动上不断努力,提升用户体验,最新的 M1 宣传中还特别强调了翻盖秒开 macOS,可以看出其对极致启动速度的追求。这篇文章提到,据 Akamai 调查,每多1秒等待,转化率会下降7%,KissMetrics 的一份报告说启动超5秒,会使19%的用户放弃等待卸载 App。 高德 App 启动优化专项完成后已经有一段时间了,一直保持实属不易,我一年前在这篇文章里也做了些总结。我这里再补充些启动优化用到一些手段和一些想法,希望这些能够对你有帮助。 通过 Universal Links 和 App Links 优化唤端启动体验App 都会...
我为什么写了《跟戴铭学iOS编程》这本书
在我改了几次封面后,书已上架。 为什么写《跟戴铭学iOS编程》又到了新的一年开始换工作的季节,我身边好多熟人也都开始寻找机会,看起来离职原因各有不同,有绩效不好的、和领导处不好的、多年难晋升的、做的事情难提升自己的、有更好机会的。但究其核心,我觉得还是危机感,想着如果脱离现在所处公司环境,没有现在的级别位置,自己还剩下什么,在一群候选人里,自己有没有胜于其他人的亮点,是否能够脱颖而出。我时常会思考这些问题,做了多年技术,一直在想,相同时间里接触和学习什么知识才是物有所值的。 计算机领域,作为开发者最开始接触,同时也是运用最多的就是编程语言,现在学习 iOS 开发一定要选择用 Swift...
Apple 操作系统可执行文件 Mach-O
介绍Mach-O 的全称是 Mach Object File Format。可以是可执行文件,目标代码或共享库,动态库。Mach 内核的操作系统比如 macOS,iPadOS 和 iOS 都是用的 Mach-O。Mach-O 包含程序的核心逻辑,以及入口点主要功能。 通过学习 Mach-O,可以了解应用程序是如何加载到系统的,如何执行的。还能了解符号查找,函数调用堆栈符号化等。更重要的是能够了解如何设计数据结构,这对于日后开发生涯的收益是长期的。了解这些对于了解编译和逆向工程都会有帮助,你还会了解到动态链接器的内部工作原理以及字节码格式的信息,Leb128字节流,Mach 导出时 Tri...
在快手做分享、无用类检查、在广州做 SwiftUI 学习笔记分享、InfoQ二叉树视频
在快手做分享 前滴滴同事邀请我去快手做分享。下面是分享时的 Slides: 详细文章介绍:如何对 iOS 启动阶段耗时进行分析 | 星光社 - 戴铭的博客 代码:GitHub - ming1016/MethodTraceAnalyze: 方法耗时分析 无用类检查如果包里有一堆没用的类,不光会影响用户下载速度,也会影响启动加载速度。检查无用类,一次是无法获得全部无用类的,因为无用的类里用了其他无用的类就算是有用了,所以需要进行递归查找,这样才能够连根拔起。这个过程如果是手动做比较费劲、收益无法一次评估,很难推动。同时还需要在线上灰度运行时检查实际类的使用情况,很多静态层面关联的类使用,实...
日本游玩
从羽田机场到酒店 秋叶原 从银座回酒店 浅草寺 新宿 涉谷 藤子不二雄博物馆 镰仓 台场 东京迪斯尼海洋 大阪 大阪环球影城 大阪海洋馆 京都晴鸭楼 清水寺 晴空塔 山鹰市 东京迪斯尼 下北泽 东京皇宫 上野 Mandarake 表参道 吉祥寺 京都站 岚山 京都国际漫画博物馆 大阪城 道顿掘
如何对 iOS 启动阶段耗时进行分析
前言启动优化一役后,超预期将所负责的 App 双端启动的耗时都降低了65%以上,iOS 在iPhone7上速度达到了400毫秒以内。就像产品们用后说的,快到不习惯。由于 App 日活用户过亿,算一下每天为用户省下的时间,还是蛮有成就感的。 启动阶段性能多维度分析要优化,先要做到的是对启动阶段各个性能纬度做分析,包括主线程耗时、CPU、内存、I/O、网络。这样才能够更加全面的掌握启动阶段的开销,找出不合理的方法调用。启动越快,更多的方法调用就应该做成按需执行,将启动压力分摊,只留下那些启动后方法都会依赖的方法和库的初始化,比如网络库、Crash 库等。而剩下那些需要预加载的功能可以放到...
avatar
戴铭
极客时间《iOS开发高手课》和纸书《跟戴铭学iOS编程》作者