老司机 iOS 周报 #218 | 2022-09-26

2,583 阅读4分钟

ios-weekly.png 老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

🐕 中心化决议管理——云端分析

@JonyFang:本文主要分享了目前字节跳动内部的一种 CocoaPods 云端化的优化方案,针对大量重复的 iOS 工程流水线构建任务进行了收敛和复用,在保证依赖决议正确性的前提下加速了依赖管理速率,提升了研发效能。目前云端分析服务已经完成第一阶段的开发并落地使用,已被内部几个核心的生产线使用。

内容结构:

  1. 背景
  2. 什么是云端依赖分析
  3. 如何加速决议
    • 制品库(全量组件索引信息)
    • 缓存机制(排序 Version 缓存、Spec 对象缓存、缓存复用)
    • 物料剪枝
    • 决议策略兼容

🐎 How to use UIViewController in SwiftUI

@Damien:在 iOS 开发中,SwiftUI 和 UIKit 将会长期共存,无论使用的是哪种框架,有时你都可能需要相互调用,幸运的是,Apple 可以轻松地将 UIKit 代码引入 SwiftUI 中使用,在本文中,作者将向你展示如何在 SwiftUI 使用 UIViewController。有兴趣的读者不妨一读。

🐎 viewDidLoad() in SwiftUI

@zvving:从 UIKit 来到 SwiftUI 世界,你可能会困惑:viewDidLoad()在 SwiftUI 下的等效方法是什么?

在声明式视图框架体系下,苹果并没有提供 load view 的行为细节回调。在绝大多数场景,可以通过 onAppear() 模拟 viewDidLoad() 的近似方法。本文详细介绍了模拟过程,以及如何封装成 view modifier 方便使用。

🐕 云音乐 iOS 启动性能优化「开荒篇」

@Smallfly:启动速度是 App 的「门面」,影响用户第一使用体验,是非常重要的体验优化项。本文记录了云音乐 App 在 iOS 13 之后冷启动优化实践。

main() 函数作为分界点,分别从 T1 和 T2 两个阶段进行针对性的优化。T1 阶段的治理主要包括动态库治理、+load 方法、无用代码清理、二进制重排;T2 阶段的治理主要是高频 OC 方法、runtime 符号遍历、网络相关、系统接口、业务影响等等。

经过阶段性的启动性能专项优化,云音乐 App 启动性能提升了 30%+。

🌟 🐕 大终端领域的新物种-KUN

@CrazyCoderShi:Flutter 动态化的尝试和建设在社区从未停止过,今年来各种方案层出不穷: AST 解析,JS Engine+,Lua VM 等,各有千秋;KUN 是咸鱼团队基于 Kraken 产出的一套夸多端的 Flutter 动态化方案,兼顾 iOS & Android 动态化的同时,对齐 W3C 标准做到 Web 端兼容,其整体方案的思路值得深入学习和借鉴,暂时并未开源。

音视频

🐎 🚧 Dynamic Island Animation explained

@ChengzhiHuang:你是否很好奇灵动岛的动画是如何设计出来的,作者通过将两个圆叠在一起,先模糊(blur)再锐化(sharpen),得到蒙层,复现了同样的动效。

摸鱼周报

@摸鱼周报 #69:第 69 期摸鱼周报来了,一起来看下本期概要:

  • 本期话题:使用 iOS 16.1 Beta 版和 Xcode 14.1 Beta 版,准备登陆灵动岛
  • 本周学习:了解符号 Symbol
  • 内容推荐:Swift、SwiftUI 相关好文推荐
  • 摸一下鱼:iOS 16 锁屏组件以及几个有趣的小工具:emojimix、hexclock、能不能好好说话

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参

同时也支持了 RSS 订阅:github.com/SwiftOldDri…

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)