# 老司机 iOS 周报 #313 | 2024-11-25

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

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

## 新闻

### [Can't install any apps on my new iPhone 16 Pro with iOS 18 from Xcode](https://forums.developer.apple.com/forums/thread/764196?answerId=804884022#804884022)

苹果的开发工程师对于从 Xcode 16 Beta/rc 升级到 Xcode 16 正式版用户会遇到无法安装 app 到 iPhone 16 系列手机的问题给出了解决方案：手动通过指令安装 XcodeSystemResources 。该问题在 Xcode 16.1 Beta 2 中修复。

```
sudo installer -pkg /Applications/Xcode.app/Contents/Resources/Packages/XcodeSystemResources.pkg -target /
```

## 文章

### 🐎 [编译器，靠你了！使用类型改善状态设计](https://onevcat.com/2024/11/type-as-state/)

[@Kyle-Ye](https://github.com/Kyle-Ye): 作者通过一个实际工作中碰到的端到端消息发送的例子，讲述了如何利用 Swift 的类型系统 , 将状态逻辑编码到类型中 , 由编译器来保证程序执行正确性，从而减少使用和维护的心智负担。

### 🐕 [MainActor usage in Swift explained to dispatch to the main thread](https://www.avanderlee.com/swift/mainactor-dispatch-main-thread/)

[@AidenRao](https://weibo.com/AidenRao)：在构建应用程序时，在主线程上执行 UI 更新任务是至关重要的，而使用多个后台线程时可能会遇到点麻烦。使用 @MainActor 属性将有助于确保您的 UI 总是在主线程上更新。文章详细解释了什么是 MainActor，全局 actor 的概念，以及如何在 Swift 中使用 MainActor。

### 🐎 [Flutter vs. Kotlin Multiplatform: Which Should You Choose for Cross-Platform Development?](https://medium.com/@rushabhprajapati20/flutter-vs-kotlin-multiplatform-which-should-you-choose-for-cross-platform-development-4bcf28358918)

[@Crazy](https://github.com/jiyan135960)：从 React Native 开始，移动端的开发就发起了跨平台的改革，如今 Flutter，KMP，C++，都进入了跨平台的研发序列。本文主要对 Flutter 与 Kotlin 两个现今比较火的跨平台框架进行了对比。

Flutter 平台的优点主要为：

1. 统一代码库
2. 富有表现力和灵活的用户界面
3. 快速的开发周期
4. 强大的社区支持

KMP 平台的优点：

1. 原生一般的性能
2. 高互用性
3. 高代码共享能力
4. Google 的支持

总结一下：Flutter 主要用于项目启动、 MVP 功能、项目原型、有 UI 统一化的需求开发。KMP 主要用于大项目和已有代码库、需要高性能、需要多平台逻辑分享的功能开发。

### 🐢 [Flutter 小技巧之 OverlayPortal 实现自限性和可共享的页面图层](https://mp.weixin.qq.com/s/LW3bASRhA_HL6pS27qUVMA)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): 本文从原理层讲解了 Overlay 和 OverlayPortal 之间的差异，并且对如何使用 OverlayPortal 做了更深一步的阐述，对于 Flutter 开发的小伙伴来说是一个不错的科普文!

### 🐕 [Integrating Live Activity and Dynamic Island in iOS: A Complete Guide](https://canopas.com/integrating-live-activity-and-dynamic-island-in-i-os-a-complete-guide)

[@Barney](https://github.com/BarneyZhaoooo)：本文介绍了关于在 iOS 中集成 Live Activities 和 Dynamic Island 的完整指南。它涵盖了如何创建和管理 Live Activities，以便在锁屏和应用程序上显示实时信息。此外，指南还介绍了如何利用 Dynamic Island 来增强用户体验，让用户能够方便地访问和交互实时通知和活动。可供开发者参考，实现更具动态交互的应用程序。

### 🐎 [Swift Format in Xcode](https://troz.net/post/2024/swift_format/)

[@DylanYang](https://github.com/Dylan19Yang)：本文介绍了在 Xcode 16 中首次集成的 swift-format 工具，swift-format 是和 swint-lint 类似的用于规范代码格式的工具。作者写了一段有问题的示例代码，并同时使用 swift-lint、Prettier 和 swift-format 进行代码自动矫正。从表现上来看 swift-format 并不如 swint-lint 一般全能，但是使用十分方便，也支持规则的自定义配置，在配置妥当后已经适用于大部分场景。同时作者也提到目前并没有官方的 Swift code style guidelines, swift-format 目前仅仅只指向了一个方向，具体的规则后面还有改动的可能。


## 内推

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