# 老司机 iOS 周报 #312 | 2024-11-18

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

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

## 新闻

### 🐎 [We're forking Flutter. This is why.](https://getflocked.dev/blog/posts/we-are-forking-flutter-this-is-why/)

[@极速男孩](https://github.com/ztlyyznf001): Flutter 社区在 Flutter 基金会的支持下，启动了名为 "Flock" 的 Flutter 新分支。此举是由于 Google 在处理桌面应用支持等方面的政策使一部分开发者感到不满，认为其发展速度和开放性不足。"Flock" 分支希望通过更加民主和包容的社区驱动模式，更好地响应开发者的需求。

### [A memory leak in Apple's Network Extension framework](https://obdev.at/blog/a-memory-leak-in-apples-network-extension-framework/)

macOS 15.0 Sequoia 被发现会存在大量的内存泄漏（14.0 也存在，但是量级很小），你可以通过 ``sudo leaks at.obdev.littlesnitch.networkextension | grep "total leaked bytes"`` 来查询自己是否受到影响。如果确实有大量内存泄漏，可以通过杀死 ``at.obdev.littlesnitch.networkextension`` 进程来强制释放。

##  Developer - 设计开发加速器

### [案例研究：设计出色的 visionOS App](https://developer.apple.com/events/view/GV4QHX6VBJ/dashboard)

与我们一起探索出色的 visionOS App，了解设计师是如何针对无边画布进行创作的。在为期半天的讲座中，你将了解如何采用沉浸式功能、为眼睛和手设计交互体验，并充分利用深度、比例和空间。

另外还有 [Apple Vision Pro 开发者实验室](https://developer.apple.com/events/view/ZJZ99TX978/dashboard) 的线下实验室，感兴趣的同学们可以积极报名。

## 文章

### 🐎 [Xcode stops fetching Swift packages](https://danielsaidi.com/blog/2024/11/04/xcode-stops-fetching-swift-packages)
[@Smallfly](https://github.com/iostalks)：在 Xcode 16.1 中，Swift 包依赖突然无法获取，并出现 ` “ Fatal: cannot use bare repository ” ` 错误。经过排查，作者发现问题与 SourceTree 添加的全局 Git 配置 `safe.bareRepository = explicit` 有关。删除或注释掉该配置后，Xcode 恢复正常。

此配置的作用是提高安全性，建议不删除全局配置，而是通过命令手动标记相关仓库为安全：  
```bash
git config --global --add safe.directory /path/to/repo
```

更详细的讨论可见 SPM 的 [issue 8068](https://github.com/swiftlang/swift-package-manager/issues/8068)，以及对应的 [PR](https://github.com/swiftlang/swift-package-manager/pull/8106) 。


### 🐕 [逆流而上的设计 - Swift 所有权和 ~Copyable](https://onevcat.com/2024/11/noncopyable/)

[@zoeGuo](https://github.com/zoeGuo)：Swift 5.9 中引入了不可复制类型的标记 ~Copyable（non-copyable），在今年的 Swift 6 中，之前类型扩展（extension）和泛型（generic）不支持 ~Copyable 的不足也得到了解决，~Copyable 的可用性得到了提升。文章用 ~Copyable 的工作方式、所有权转移关键字、在泛型或扩展中使用 ~Copyable，三个部分详细讲解了 ~Copyable 的概念、工作原理以及具体如何使用。作者在对 ~Copyable 的概念阐述中提到：“以往的协议是‘为类型增加功能’，而 ~Copyable 则是‘为类型解除限制’”，相信能帮助你更快理解 ~Copyable 协议。在文末：“只在确实需要独占资源或严格控制生命周期时才使用 ~Copyable，可能会是更加平滑和正确的方式”，也很好的总结了 ~Copyable 的使用场景。文中有大量代码例举以及内存管理的详细示意，强烈推荐阅读原文。

### 🐕 [THREADS IOS PERFORMANCE](https://atscaleconference.com/threads-ios-performance/)

[@DylanYang](https://github.com/Dylan19Yang)：本文是 Threads 开发讲述了 Threads 是如何优化 App 性能的。Threads 主要关注的性能指标包含了图片加载速度、网络内容的返回速度、发布成功率、页面加载耗时、发布可靠性等。本文对页面加载耗时和发布可靠性方面做了更深入的讲解，包括通过劣化实验推断页面加载耗时对业务数据的影响、提供 debug 工具帮助业务研发判断自己业务的性能水平以及发文草稿的磁盘占用对用户的体验影响等。本文对 Threads 各方面的性能监控、优化等都有涉及，想要优化自己 App 的读者可以细致阅读一下。

## 工具

### [screenshot-to-code](https://github.com/abi/screenshot-to-code)

[@EyreFree](https://github.com/EyreFree)：screenshot-to-code 是一个开源 AI 代码生成工具，能将设计稿截图、Figma 设计稿或网页模型快速转换为干净、可用的代码。该工具支持多种技术栈，包括 HTML+Tailwind、React+Tailwind、Vue+Tailwind、Bootstrap 等。它支持 Claude Sonnet 3.5 和 GPT-4o 等模型。且近期加入了实验性功能，可以将网页交互的视频 / 屏幕录制转换为功能性原型。用户可以通过 Docker 快速部署。对于需要快速将设计转换为代码的开发者来说，这是一个非常实用的工具，感兴趣可以尝试。

## 音视频

### 🐕 [SwiftConnection Videos, Material and Transcript](https://async.techconnection.io/frenchkit)

[@Barney](https://github.com/BarneyZhaoooo)：该网站提供了关于 Swift 编程语言的会议资源，包括视频、材料和演讲稿。会议内容覆盖 Swift 性能优化、AI 集成、嵌入式 Swift 应用、可访问性构建等多个技术领域。这个平台为 Swift 开发者提供了丰富的学习材料和交流机会。

## 内推

重新开始更新「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）
