# 老司机 iOS 周报 #291 | 2024-06-03

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/291.jpg?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

明天我们就将推送 《WWDC24 内参》的报名信息，希望参与创作的同学不要错过哦～

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 文章

### 🌟 🐕 [深入理解内存分配](http://djs66256.github.io/2018/04/04/2018-04-04-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D/)

[@莲叔](https://github.com/aaaron7)：内存问题一直是 iOS 平台上最常见的稳定性问题，尤其在以 OC 为主的应用中。我们在排查野指针崩溃的问题时遇到的难点往往是崩溃点和问题点往往不在一起。这篇文章通过分析 iOS 平台内存分配的原理来非常严谨的解释了这个现象的原因，非常值得大家学习。之后作者还提出了一种定制内存分配策略的实现方式，对于精细化的性能分析或者特定应用场景分配优化都是不错的方向。

### 🐕 🌟 [Tricking iOS Into Animating App Icons](https://bryce.co/animated-app-icons/#the-problems)

[@水水](https://www.xuyanlan.com/categories/iOS/)：如何让你的 APP 图标动起来？这是一个很有意思的事情，文本作者从系统提供的切换 APP 图标 的 API 实现中，一步步通过反编译，解决了弹框提醒、进入后台等问题，实现了 APP 的动态图标。并附带有 Github Demo 实现 [AnimatedAppIcons](https://github.com/bryce-co/AnimatedAppIcons)，效果如下：

![](https://github.com/SwiftOldDriver/iOS-Weekly/assets/20059859/d89aceaf-cfd9-4a3b-ace6-c766682d664c)

### 🐕 [Copy on Write Performance Measurements](https://github.com/Swift-CowBox/Swift-CowBox-Sample)

[@Kyle-Ye](https://github.com/Kyle-Ye): 24 年 04 月 15 日期推荐的 COW 库后续，作者使用 Benchmarks 和 Instruments 对他的 COW 库进行了详细的性能评估。对性能评估和 COW 细节感兴趣的读者欢迎阅读。

### 🐢 [Build your next website in Swift](https://www.hackingwithswift.com/articles/266/build-your-next-website-in-swift)

[@DylanYang](https://github.com/Dylan19Yang)：本文作者借由 WWDC 2019 上苹果用来介绍 result builders 的 HTML 风格的代码作为引子，一步一步地展示了如何通过 Swift 的各种语法构建出一个类 HTML 风格的开发框架，并最终输出 HTML 代码，使得 Swift 开发者可以不必精通 HTML 就可以通过 Swift 写出 HTML 代码。同时写 Swift 代码相比直接写 HTML 又有更好的编译校验，提高了可靠性。在这个过程中，作者也介绍了 result builders 的用法和它的一些特性。最后作者揭示了这个框架的整体构思过程，当你回看时会发现这其实和 SwiftUI 如出一辙。


### 🐕 [Always correct gradient text in UIKit](https://nemecek.be/blog/143/always-correct-gradient-text-in-uikit)

[@Barney](https://github.com/BarneyZhaoooo)：这篇文章提供了在 UIKit 中为 UILabel 创建渐变文本的解决方案。初始方法是通过 UIImage 生成 UIColor，但存在问题：当 UILabel 的 frame 大于文本内容时，渐变显示不完整。解决方案包括使用 AutoLayout 居中渐变或设置合适的约束，或者使用 UIStackView 子类来自动布局，确保渐变正确渲染。文章强调，渐变渲染应作为最后步骤进行，以适应当前文本的边界。此方法也适用于 UITextView。

### 🐢 [一文搞懂七种基本的 GC 垃圾回收算法](https://mp.weixin.qq.com/s/RSWYSAzpvPJD056vZDQPig)

[@Crazy](https://github.com/jiyan135960)：本篇文章是一篇非常详细的关于 GC 算法的讲解文章，仔细的阅读本文不仅可以让你理解现有的七种基本的 GC 算法，更可以应用在面试中，让你在面试中给面试官留下深刻印象。本文先介绍了 GC 算法的起源与基本概念，其中主要讲解了 GC 算法的性能评价标准。基础讲解完之后本文开始详细讲述了 GC 的七种基本算法的原理与改进方法，其中包括：标记-清除法、引用计数法、GC 复制算法、标记-压缩算法、保守式 GC 、分代垃圾回收、增量式垃圾回收。在文章的最后作者更是用一张图来简明扼要的对七种算法进行了对比，将各个算法的优缺点都写在了表格之中。本文是一篇值得大家反复仔细阅读的文章，无论是工作中还是面试中对大家都会有很深的帮助。

## 音视频

### [WWDC Index](https://nonstrict.eu/wwdcindex/)

[@EyreFree](https://github.com/EyreFree): WWDC 会议的非官方索引，包含 2000 年至 2023 年 3430 次会议的资源，以及各种技术讲座，比较完整。此网站不隶属于苹果公司，所有内容仅供参考。感兴趣的同学可以收藏学习。

### [Developing An Inclusive Mindset](https://david-smith.org/blog/2024/04/22/new-post/)

[享耳先森](https://github.com/iblacksun): 如果你的产品在考虑或已经做了无障碍适配，建议看看这个视频。作者 David Smith 是独立开发者，开发了 `Pedometer Plus+` 等应用，视频里重点介绍了他对 ` 包容性设计 ` 的认知发展过程：无障碍适配不仅仅是 `Accessibility API` 适配这么简单，而应该从更全局的角度来审视整个设计。

## 内推

重新开始更新「iOS 靠谱内推专题」，整理了最近明确在招人的岗位，供大家参考

[杭州] 心光团队 - 心光 App - iOS/Android/UI/UX/资深运营增长专家

具体信息请移步：https://www.yuque.com/iosalliance/article/bhutav 进行查看（如有招聘需求请联系 iTDriverr）

## 关注我们

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

**关注有礼，关注【老司机技术周报】，回复「2023」，领取 2023 及往年内参**

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 说明

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

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
