# 老司机 iOS 周报 #311 | 2024-11-11

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

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

## 文章

### 🐕 [Migrating Combine to AsyncAlgorithms](https://blog.jacobstechtavern.com/p/migrating-combine-to-asyncalgorithms)

[@zoeGuo](https://github.com/zoeGuo)：Swift Concurrency 发布以来，其设计在许多简单用例上大大超越了 Combine，而在 AsyncAlgorithms 发布之后，Combine 中的许多功能在 Swift Concurrency 中都可以使用。本文以一个示例项目为例，逐步演示了将 Combine 代码迁移到 AsyncAlgorithms 的过程，涵盖了数据源合并、流和节流、以及 CurrentValueSubject 到 AsyncChannel 的转换等常见场景。迁移后代码更简洁易读，易于维护；与 Swift Concurrency 无缝集成，享受异步编程的便利。

### 🐕 [Expanding SwiftUI capabilities in Nutrient: Customizable main toolbar](https://www.nutrient.io/blog/swiftui-main-toolbar/)

[@Barney](https://github.com/BarneyZhaoooo)：这篇文章主要探讨了在 SwiftUI 中使用主工具栏的实现方法。作者介绍了 SwiftUI 的 ToolBar 视图及其在 iOS 16 及以上版本中的应用，强调工具栏在提升用户体验和界面整洁性方面的重要性。文章通过示例代码展示了如何创建和自定义工具栏，包括添加按钮、分隔符以及响应用户交互的功能。此外，作者还讨论了工具栏的布局和风格设置，以及如何在不同设备上保持一致的用户体验。

### 🐕 [Faster iOS Networking with Shared Dictionary Compression](https://eisel.me/shared-dictionary-compression)
[@JonyFang](https://github.com/JonyFang): 共享字典压缩是一种有效加速 iOS 应用的网络性能的技术，通过在客户端和服务器之间共享数据字典来减少传输数据量。

## 工具

### [GitHub Copilot 官方发布 Xcode 插件](https://github.blog/changelog/2024-10-29-github-copilot-code-completion-in-xcode-is-now-available-in-public-preview/)

[@kemchenj](https://kemchenj.github.io/)：Xcode 在 AI 补齐的功能上一直落后其它 IDE/Editor，虽然今年 Xcode 也发布了  Code Completion Prediction 功能，但只有国外能用。终于终于，GitHub Copilot 官方在近日发布了 Xcode 插件，让我们也可以用上 AI 补齐的功能：

- 代码补齐
- 多语言支持，包含 Swift/Objective-C/C/C++/Metal
- 多行代码补齐
- ...

周报之前其实也介绍过一款国内工程师开发的 [Copilot Xcode 插件](https://github.com/intitni/CopilotForXcode)，经过了解之后发现 GitHub 这次发布的插件其实是 fork 出来的，并且是[已经跟原版作者达成了协议](https://github.com/intitni/CopilotForXcode/discussions/597)，GitHub 也[给了一点赞助金给作者](https://x.com/intitni/status/1851352010718880059)。

原版后续也会继续维护，而且就目前来说原版的功能甚至比 GitHub 版本更多更丰富。最后想说这大概是我入行以来看到最和谐的一次项目分叉了。

## 代码

### 🐕 [Metal-Puzzles](https://github.com/abeleinin/Metal-Puzzles)

[@BluesJiang](https://github.com/bluesjiang)：这个代码库提供了一些简单的习题，用来联系编写 Metal 的 Custom Kernel，可以利用在 MLX、Metal Shader 等场景下。对于想学习使用 Metal 加速计算、自己写 Shader 的可以下载下来跟着教程周走一遍。仓库提供了一个测试框架，需要写的代码注意是在 source 变量字符串里。

## 内推

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

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

## 关注我们

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

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

![](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）
