Skip to content

Releases: SwiftOldDriver/iOS-Weekly

老司机 iOS 周报 #299 | 2024-07-29

29 Jul 02:16
Compare
Choose a tag to compare

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

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

WWDC24 内参

🌟 WWDC24 10146 - 为自定义容器视图添加更多的能力

@whf881211:该文章介绍了 SwiftUI 新添加的一些用于操控 Subview 的 API。这些 API 令 SwfitUI 的操控 UI 的能力大大增强,让我们可以给自定义容器添加更多灵活性和更强大的能力。

🌟 WWDC24 10198 运行、暂停、检查:探索如何使用 LLDB 进行有效调试

@haochen08:本文以 WWDC24-10198 为主线,综合了 WWDC19-24 期间多个和调试主题相关的 Session,向大家介绍如何使用 Xcode IDE 和 LLDB 的最新能力,进行有效和高效的调试。同时还介绍了如何处理使用相关工具碰到的常见问题和一些高级技巧。

文章

🐎 SwiftUI Hero Animations with NavigationTransition

@xiaofei86:借助 iOS 18 中 SwiftUI 新引入的 NavigationTransition 协议实现和 App Store 首页卡片展开类似的 Hero 动画只需三行代码。阅读本文,跟着作者一步步复现一模一样的效果,并了解相关的 SwiftUI 新特性。

🐕 Memory consumption when loading UIImage from disk

@含笑饮砒霜:这篇文章主要讨论了在使用 SwiftUI 从磁盘加载 UIImage 时遇到的内存消耗问题,并提供了多种解决方案来优化内存使用。通过下面这些要点,读者可以全面了解文章讨论的内存消耗问题、原因、解决方案以及优化建议:

  • 1.内存消耗问题
    • 问题描述:当使用 UIImage 从磁盘加载大量图片时,内存消耗会迅速增加,特别是当图片频繁切换或数量较多时
    • 示例场景:文章通过一个包含 200 张壁纸的示例项目,展示了使用 SwiftUI Slider 滑动查看图片时内存消耗增加的问题
  • 2.内存增长原因
    • 系统缓存机制:使用 UIImage(named:)方法加载图片时,图片会被系统缓存,导致内存占用增加
    • 代码实现:展示了使用 UIImage(named:)方法的代码示例,并解释了为什么这种方法会导致内存问题
  • 3.解决方案
    • 避免系统缓存:推荐使用 UIImage(contentsOfFile:)方法加载图片,该方法不会将图片添加到系统缓存中,从而减少内存消耗
    • 代码优化:通过重写图片加载逻辑,使用 UIImage(contentsOfFile:)替代 UIImage(named:),解决了内存快速增长的问题
  • 4.图像缓存策略
    • NSCache 使用:对于需要处理或频繁访问的图片,可以使用 NSCache 进行缓存,以提高性能和减少内存浪费
    • 缓存逻辑:展示了如何使用 NSCache 创建一个简单的图像缓存,并在需要时从缓存中检索或存储处理后的图像
  • 5.性能优化建议
    • 预处理图像:建议在后台线程预先处理图像(如缩放),以避免在主线程上进行耗时操作,提高应用性能
    • 预加载策略:可以提前加载即将显示的图片,以减少滑动时的加载延迟

🐎 Exploring SwiftUI: Make SF Symbols Wiggle Wiggle

@Smallfly:这篇文章主要介绍了如何在 SwiftUI 中使用 SF Symbols 的新型摆动(wiggle)动画效果。

🐎 Using SwiftUI in Command Line Tools

@Damien:文章介绍了一种创新的方法,使用 SwiftUI 框架在命令行工具中为 iOS 应用图标添加徽章。通过 ImageRenderer 类,SwiftUI 视图可以被导出成图像。文章提供了一个名为 badgeify 的示例工具,它接受命令行参数来指定图标的输入输出路径和徽章文本。badgeify 工具利用 SwiftUI 构建视图,并利用 ImageRenderer 生成最终的带徽章图标图像。尽管在命令行环境中使用 SwiftUI 存在一些限制,比如 Xcode 无法为 SPM 可执行文件生成预览,但文章也提供了一些技巧来优化开发和测试流程。

工具

🐎 Enable XcodeLLM on ChinaSKU Mac without disabling SIP

@Kyle-Ye: 借助开源 eligibility_util 实现,实现在国行设备不关闭 SIP 的情况下使用 Xcode 16 Beta 的 LLM 功能

代码

🐎 🌟 Charts

@水水:Charts 是一个用 Swift 编写的为 iOS 创建图表方面提供各类样式的库,其对标的是在 Android 开发人员中非常受欢迎的 MPAndroidChart 图表库。对于读者来说非常值得参考和收藏。

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #298 | 2024-07-22

22 Jul 02:24
3dced7c
Compare
Choose a tag to compare

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

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

WWDC24 内参

🌟 WWDC24 10104 - 使用 RealityKit 构建空间绘画 App

@Layer: RealityKit 是 visionOS 应用空间功能的基础。我们将以空间绘画 App 为例,探索资源在 RealityKit 中的运作方式,通过构建自定义网格、纹理和着色器、使用低级别网格和纹理 API 等,实现精致的视觉设计。

🌟 WWDC24 10074 - 动态字体体验入门

@nuomi1: 使用动态字体功能实现一个演示 App,对比 SwiftUI 与 UIKit 在实现上的异同点。

🌟 WWDC24 10118 - UIKit 新功能

@Sharker: 在 iOS 18 中,UIKit 经历了显著的改进,专注于提升用户界面的直观性和互动性。最引人注目的是全新的文档启动体验,它为应用提供了更多个性化展示的空间,同时优化了用户的首次文档创建流程。标签栏和侧边栏也经过了重新设计,不仅外观更加紧凑,还增加了新的定制功能,使得内容展示更为突出。强化了 SwiftUI 和 UIKit 之间的互操作性,特别是通过统一手势系统和允许 SwiftUI 动画类型直接应用于 UIKit 视图,极大地丰富了开发者在动画和交互设计上的选项。此外,UIKit 的 Trait 系统现在支持自动特性跟踪,简化了视图更新,提高了应用性能。为了进一步增强用户体验,iOS 18 引入了 UIUpdateLink ,它使得周期性的 UI 更新更为高效,并且通过感官反馈的改进,如对 Apple Pencil Pro 的支持,为 iPad 用户提供了更加丰富的交互反馈。文本编辑也得到了提升,新的文本格式化面板和写作工具为用户提供了更直观的编辑体验。总的来说,iOS 18 的 UIKit 更新为开发者提供了更多创新的工具和 API,以构建更加引人入胜和用户友好的应用界面。

新手推荐

🐎 Blend Modes in SwiftUI

@Smallfly:这篇文章详细介绍了 SwiftUI 中的图层混合模式(Blend Modes),展示了如何通过这些模式增强图像的视觉效果。从基础的「正常」模式到复杂的「强光」和「颜色减淡」,每个模式都有详细的计算公式和效果展示。如果你想设计更有吸引力的视觉效果,推荐一读。

文章

🐕 Mastering Animatable and AnimatablePair in SwiftUI

@水水:在本文中,探索了 SwiftUI 的 Animatable 和 AnimatablePair,并通过 Demo 代码和实际效果举例让大家了解如何使用这些 API 在应用程序中制作更高级的动画。

🐎 Introducing Entry macro in SwiftUI

@EyreFree:这篇文章介绍了 SwiftUI 中新推出的 @Entry 宏,这是一个用于创建独立视图入口点的功能。文章解释了 @Entry 宏的用途和优势,包括:

  • 允许开发者为不同平台(如 iOS、macOS 等)创建特定的入口点;
  • 支持多个入口点,便于创建不同的预览和测试场景;
  • 简化了应用程序的结构,不再需要传统的 App 协议和 @main 属性;
  • 文章通过实例演示了如何使用 @Entry 宏创建多个入口点,以及如何为不同平台定制 UI。同时,作者还讨论了 @Entry 宏与现有 SwiftUI 生命周期(如 Scene 和 WindowGroup)的兼容性。

文章强调了 @Entry 宏带来的灵活性和简洁性,认为它将改变 SwiftUI 应用程序的开发方式,特别是在创建多平台应用时。感兴趣的朋友不要错过。

🐎 Create Custom SF Symbols in Sketch

@zoeGuo:SF Symbols 是由苹果公司推出的一套系统图标,这篇文章作者介绍了如何用已有的 SF Symbols 简单修改获得自己想要的自定义 SF Symbols。通过简单的示例说明了怎么导入符号、调试、调整和优化等,操作简单易学,适合想自己做一些简单图标的初学者。

代码

🐎 Charts

@极速男孩:DGCharts 是为 iOS、tvOS 和 macOS 平台设计的图表库,灵感来源于 Android 的 MPAndroidChart。除了基本的图表类型,如折线图、条形图、散点图和饼图,还支持自定义图表样式、高亮显示、图表交互、动态数据更新等高级功能。

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #297 | 2024-07-15

15 Jul 02:26
Compare
Choose a tag to compare

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

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

WWDC24 内参

🌟 WWDC24 10135 - What's new in Xcode 16

@Yuanxu Han:和往年一样,今年 Xcode 也迎来了全新版本,Session 10135 从 EditBuildDebugTestProfile 几个方面非常简短地讲述了更新的内容,文章针对这些重点特性分别进行了 Session 内容的翻译和部分必要的补充,尽力保证读者都可以对其有清楚的认识和理解;然后从 Xcode Release Note 中整理了部分需要关注的更新点;最终进行总结和探讨。

🌟 WWDC24 10188 - SF Symbols 6 使用指南

@Mim0sa:为了更方便没有 SF Symbols 经验的读者理解,也将往年的 SF Symbols 相关内容归纳整理。本文从 SF Symbols 的特性切入,讨论 SF Symbols 这款由系统字体支持的符号库有哪些特点以及该如何使用。在这次 WWDC 2024 更新中,除了符号的数量增加到了 6000+ 之外,还新增了一些能让符号们更加活泼的动画效果,同时提升整体使用体验,给界面带来了更多活力和想象力,让 SF Symbols 这把利器变得又又又更加趁手和锋利了。

文章

🐎The State Of Meridian

@Kyle-Ye: 本文介绍了于几年前 Meridian Swift 服务端框架的最新状态(async&await / Websockets 支持 / 中间件等)和未来计划(Swift Macro 和 Swift OpenAPI framework 迁移),对 Swift on Server 感兴趣的同学可以详细阅读了解。

🐎 Swift Testing support for SnapshotTesting

@Smallfly:WWDC24 推出的 Swift Testing 框架为 Swift 语言带来了新的原生测试支持。作者介绍 SnapshotTesting 库已同步支持此框架,同时提供了 Beta 预览和新特性。它简化了 XCTest 与 Swift Testing 的不兼容问题,允许开发者在不同测试环境中使用统一的 assertSnapshot 方法。对测试框架感兴趣的同学可阅读原文了解更多。

🐕 Using TextRenderer to create highlighted text

@AidenRao: 这篇博文介绍了如何使用 TextRenderer 在 SwiftUI 中创建带有文本高亮效果的视图。TextRenderer 是在 WWDC 2024 上引入的新协议,可以增强文本的渲染。使用TextRenderer,我们可以更纯粹地在 SwiftUI 中实现文本高亮,而不再需要使用 NSAttributedString。

工具

🐎 ImHex

@EyreFree:ImHex 是一个功能丰富的十六进制编辑器,专为逆向工程师、程序员和夜间工作者设计。它提供了许多实用功能,如:

  • 强大的十六进制视图,支持字节修补、无限撤销 / 重做、多种数据解释和高亮显示等;
  • 自定义 C++ 风格的模式语言,用于解析和高亮文件内容;
  • 数据检查器,可将数据解释为多种类型;
  • 基于节点的数据预处理器,可在显示前修改和解码数据;
  • 支持多种数据源,如本地文件、原始磁盘、进程内存等;
  • 内置反汇编器,支持多种处理器架构;
  • 集成 Yara 规则扫描;
  • 差异比较、数据分析、可视化等辅助工具;
  • 现代化用户界面,支持多工作区、自定义布局、深色模式等。

总之,ImHex 是一款功能全面、设计专业的十六进制编辑器,可以极大提升逆向工程和低级编程的工作效率,感兴趣的朋友可以试试。

代码

🐎 StreamUI

@Damien: StreamUI 项目是一个用于创建和流媒体视频的强大库,它允许开发者使用 SwiftUI 编程生成动态视频,并实时渲染和直播。这个库的主要功能包括实时视频渲染,直播流媒体,动态视频生成等。

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #296 | 2024-07-08

08 Jul 02:07
Compare
Choose a tag to compare

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

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

WWDC24 内参

🌟 WWDC24 10144 - What's New in SwiftUI

@WBear:SwiftUI 作为苹果在 2019 年发布的跨平台框架至今,经过多年的版本更新、优化迭代,已经相对成熟。国外已经有部分公司已经开始使用 SwiftUI 进行商业化开发了,对已有 app 进行重构和更新和新 app 的从 0 开发。国内目前因大量用户的 iOS 版本还停留在较早版本,所以导致 SwiftUI 在国内不温不火。但是 SwiftUI 作为苹果未来主推的方式,作为 iOS 开发者,提前了解与学习 SwiftUI 并不是无用功,以备不时之需 (毕竟小组件只能用 SwiftUI 来开发,而且想要写出更酷炫的 Vision Pro app ,学习 SwiftUI 也是必不可少的环节)。

🌟 WWDC24 10136 - Swift 的新功能

@bq:文章简要回顾 Swift 过去十年的历史,介绍社区通过工作组、扩展包生态和增加平台支持来促进 Swift 发展。还介绍一种默认实现数据竞争安全的新语言模式,以及一个允许在高度受限系统上运行的 Swift 语言子集。最后将探索一些语言更新,包括不可复制类型、类型化抛出和改进的 C++ 互操作性。

文章

🐕 Async await in Swift explained with code examples

@zoeGuo:这篇文章很全面的讲解了 Swift 中 asyncawait 在处理异步任务中的作用和用法。并探讨了结构化并发的概念,通过线性执行方法,使异步代码执行顺序需更加清晰,与传统基于闭包的的异步编程相比,结构化并发更简洁、易理解。同时代码示例了如何将基于闭包的异步代码转换成使用 asyncawait 处理的新结构。文末还讨论了 Swift 6 的新特性和相关迁移策略。

🐎 Flutter 架构设计:MVVM + Repository

@极速男孩:文章介绍了 Flutter 中的 MVVM+Repository 架构设计,强调高内聚、低耦合的核心原则。通过分离关注点, MVVM 使代码更易于维护和测试,结合 Repository 模式进一步解耦业务逻辑和数据访问。文中详细解释了 MVC, MVP 和 MVVM 的演变原因,并提供了 MVVM+Repository 在 Flutter 中的实现示例,展示了如何通过 StreamController, FutureBuilder 和 StreamBuilder 进行数据绑定和异步操作管理。

🐎 Plotting a Path to a Package Ecosystem without Data Race Errors

@Damien:本文主要讨论了 Swift 6 语言模式对于数据竞争安全性的改进。Swift 6 可以帮助消除潜在的并发错误,提高代码的全性和可维护性。目前,已有超过 43% 的包没有数据竞争错误,这对于 Swift 6 beta 过程的第一周来说是一个很好的开始。

🐎 普通 iOS 开发者的第一款 Harmony Next 应用

@Crazy:本篇文章中不包含代码,读起来会很快,但是里面包含了很多产品开发中的关键点。抛开 Harmony 不谈,这篇文章也可以为其他的移动端产品开发提供很多的借鉴,如果想成为独立开发者的话,更要仔细阅读此文。本文从立项开始讲起,其中有竞品分析,技术选型,之后更有隐私协议等合规流程的介绍,可以说是对一个移动端应用从开发到上架的大致的重要任务都已提及。俗话说实践出真知,看完了文章,大家可以尝试自己按照这套流程自己写一个小应用看看反响。

工具

🐕 Generative AI for beginners

@JonyFang: Generative AI for Beginners 是微软 Cloud Advocates 团队推出的生成式 AI 入门的系列课程,分十二章介绍了构建生成式 AI 应用程序的基础知识,课程仓库在 GitHub 上已有超过 5.5w Stars。教程中逐章介绍了生成式人工智能原理和应用程序开发的知识点,提供了导学视频、相关扩展材料、代码示例及相关进阶的学习资源。

🐎 AutoCorrect

@Smallfly:AutoCorrect 是一个基于 Rust 编写的工具,用于「自动纠正」或「检查并建议」文案,给 CJK(中文、日语、韩语)与英文混写的场景,补充正确的空格,纠正单词,同时尝试以安全的方式自动纠正标点符号等等。

类似 ESlint、Rubocop、Gofmt 等工具,AutoCorrect 可以用于 CI 环境,它提供 Lint 功能,能便捷的检测出项目中有问题的文案,起到统一规范的作用。

支持各种类型源代码文件,能自动识别文件名,并准确找到字符串、注释做自动纠正。

代码

WhisperKit

@DylanYang:一个集成了 OpenAI 的 Whisper 语音识别模型的 Swift 库,作者利用 CoreML 库和 iPhone 设备上的神经网络引擎对音频编码、文字解码等做了额外的性能优化。主页上有提供通过 TestFlight 下载的 Demo App,有兴趣的同学可以体验一下。

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #295 | 2024-07-01

01 Jul 04:48
Compare
Choose a tag to compare

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

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

WWDC24 内参

今年的内参创作正在紧锣密鼓的展开,首篇文章已经发布。目前 空间计算 等主题还有重要 Session 期待大家的创作,可以填写问卷继续报名:)

🌟 WWDC24 10195 - Go further with Swift Testing

@Zac:Swift Testing 是 Swift 团队推出的一个全新的测试框架,集合了原生、开源、跨平台、高效、易用、IDE 无缝集成等新特性。文章从 0 开始介绍如何使用 Swift Testing ,对比了与 XCTest 的差异,最后对 Swift Testing 以及单元测试的相关问题进行了探讨。

新手推荐

🐢 Flutter 面试八股之深入理解 Dart 异步实现机制

@CrazyCoderShi: Flutter 日常开发中用到的各种异步机制你都了解其运行原理么 : Future, Timer, isolate, Runner; 他们跟 Thread 又有什么关系?本文由 GYSTech 提供,详细阐述了几个异步机制的深层原理,同时清晰的展示各种关联,带你详细了解 Flutter 异步机制;最后小编推荐有英文阅读能力的同学同时阅读 Dart VM 机制讲解,可以加深对于 Flutter 底层运行的了解.

文章

🐎 All new frameworks presented at WWDC24

@含笑饮砒霜:这是一个关于 Apple 公共框架的在线资源页面,为开发者提供了一个全面、准确、易用的 Apple 公共框架查看和搜索平台,极大地便利了开发者在 Apple 生态系统中进行框架选择和开发工作。

🐎 Reverse Engineering Photos' New Search UI

@Damien:文章介绍了 iOS 18 中 Photos 应用搜索界面的逆向工程分析。作者探索了创建与键盘背景融合的自定义搜索栏的技术,并通过调试和使用 Objective-C 运行时方法,成功复现了这一效果。最后,作者提供了一个 GitHub 示例项目,展示了如何将自定义搜索栏集成到应用中。

🐕 Preparing your App Icon for dark and tinted appearance

@AidenRao: 这篇文章介绍了在 iOS 18 中引入的关于应用图标的新要求,提供三种不同版本的应用图标:亮模式、暗模式和有色(tinted)模式。文章提供了关于设计这些图标的建议和注意事项,包括暗模式下的颜色选择和有色模式下的灰度图像要求。此外,还介绍了如何使用苹果提供的设计资源和模板来支持开发者和设计师创建可自定义的应用图标。

🐕 SwiftData vs Realm: Performance Comparison

@DylanYang:本文作者通过自己写的测试 Demo 深度对比了成熟的社区开源产品 Realm 以及 Apple 新推出的 SwiftData 的性能差距。总的来说得益于 Realm 使用的轻量化的对象和 mmap 的内存管理方案,Realm 在大多数场景下尤其是处理大量数据的时候都有远超 SwiftData 的性能表现,部分差距可达 3-10 倍。但是 SwiftData 在复杂数据查询和少量数据(<=10000)时的更新场景下也有优势。除开性能表现外,SwiftData 相较于 Realm 而言还是一个不够成熟的框架,比如最低支持 iOS 17+ 以及依然存在若干 bug 等,不过 SwiftData 支持索引,这对大数据集有一定帮助。以上这些都是开发者在做数据库的方案选择时可以考虑的因素。

工具

🐎 riffo.ai:AI 文件自动整理工具

@EyreFree:Riffo 是一款革命性的 AI 文件命名工具,旨在帮助用户告别杂乱无章的文件名,节省大量文件整理时间。它内置于菜单栏中,只需单击即可使用。Riffo 支持各种常见文件格式,如图片、Word 文档、PDF 等,让文件管理变得简单高效。用户可以自定义命名规则,Riffo 就会自动为文件批量重命名,实现无人工干预的文件管理。凭借并行处理技术,Riffo 可以在几秒钟内完成大批量文件的重命名,目前支持 macOS 系统。推荐每一位被文件管理所苦的用户尝试使用。

🐎 Installing macOS Sequoia Beta in a Separate APFS Volume

@Crazy:对于既想要使用最新版本的 macOS Sequoia,但却只有一台主力机的开发人员来说。利用一个单独的 APFS 卷来安装 macOS Sequoia 测试版,是一个很好的方法,本文将这种安装最新 macOS 的过程简化为 10 个步骤。

  • 使用 Time Machine 进行备份
  • 创建一个新的 APFS 卷
  • 关闭 Mac
  • 启动并一直按住电源按钮
  • 选择“ Options ”
  • 然后选择将 Sonoma 重新安装到步骤 2 中的卷
  • 等待一段时间
  • 安装完成后,最好不要登录 iCloud,并跳过迁移之前的用户账户
  • 打开系统设置,启用测试版更新,并将该安装更新到 Sequoia
  • 向 Apple 提交反馈!

代码

🐕 apple/app-store-server-library-swift

@Barney:Apple App Store Server Swift Library 是一个为 App Store 服务器 API 和通知设计的 Swift 库,支持 iOS 应用开发。它提供了安装指南、详细的 API 文档、使用示例和安全更新支持。开发者可以通过 Swift Package Manager 轻松集成,并参照示例代码快速上手。

🐢 below/HelloSilicon

@xuyafei86:在 iOS 开发中,定位疑难 BUG、优化性能和逆向工程等经常需要对汇编、操作系统、处理器有一定的了解。但在 Apple Silicon Mac 上学习汇编十分困难,大部分中文材料仍然停留在 32 位处理器,基于 Linux 系统。而《Programming with 64-Bit ARM Assembly Language》是入门 ARM64 汇编语言的优秀材料。本仓库将此书的所有示例代码适配到 Apple Silicon Mac。感兴趣的同学可以结合原书一起学习。

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #294 | 2024-06-24

24 Jun 02:04
Compare
Choose a tag to compare

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

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

文章

🐕 使用 Swift 6 语言模式构建 Swift 包

@AidenRao: Swift 6 带来了许多重要的新特性,如数据隔离和数据竞争安全检查,这些特性有助于编写更安全、更高效的代码。然而,这些新特性并不会自动启用,需要通过 Swift 6 语言模式显式开启。通过下载和安装 Swift 6 工具链,并在命令行或包清单文件中启用 Swift 6 语言模式,我们可以提前体验和适应这些变化。尽管新特性带来了一些学习和调整成本,但它们最终会使我们的代码更加健壮。

🐎 Here are 3 advanced tips in Swift

@DylanYang: 作者在本文中介绍了三个知识点

  1. enumareted 返回的 index 永远是一个从 0 开始的计数器,它与实际数组的 index 是不保证相等的,像 ArraySlice 这种 index 不从 0 开始的情况就会出现问题。更稳妥的情况是使用 zip 组合 indices 或者使用 Algorithms 库的 indexed 方法来进行遍历。
  2. 多层嵌套的循环前可以加上标签,方便在内层循环中需要时直接 break 外层循环。
  3. 非枚举类型也可以通过方法重载来使用模式匹配。

🐕 A preview of our upcoming UIKitNavigation library

@Barney:文章介绍了即将发布的 UIKitNavigation 库,这是一个为 UIKit 设计的状态管理和导航工具库,灵感来源于 SwiftUI。它包括状态观察、双向绑定和状态驱动导航等功能,旨在简化 UIKit 应用开发。此外,库的工具基于纯 Swift 构建,具有跨平台潜力。

🐕 node-swift: Write NodeJS native modules in Swift

@EyreFree:NodeSwift 是一个让 Swift 与 Node.js 无缝对接的库。它具有以下优点 :

  • 安全:充分利用了 Swift 的内存安全和自动引用计数,无需手动管理内存,避免了内存相关的问题;
  • 简单:提供了不同层次的 API,适应不同的需求,并且使用渐进式的方式让开发者循序渐进地使用;
  • 原生:NodeSwift 的 API 设计遵循 Swift 的惯用法,例如使用 Swift 的 Dynamic Member Lookup 特性让互操作更加自然;
  • 全面:在 Swift 中可以访问几乎所有的 Node.js API,包括操作 JavaScript 对象和调度事件循环等;
  • 跨平台:支持 macOS、Linux、Windows 甚至 iOS 等多个平台;
  • 高效:直接在宿主平台上运行 Swift 代码,相比 WebAssembly 拥有更好的性能,且可以直接访问系统底层 API。

NodeSwift 是 Swift 与 Node.js 互操作的优秀方案,帮助开发者用 Swift 构建 Node.js 模块,或在 Swift 应用中引入 Node.js 的生态,为相关应用开发带来更多可能性。

🐎 Getting started with Swift Testing

@Smallfly:Swift Testing 是由 Apple 在 2024 年的 WWDC 上介绍的现代、表达性强、基于宏的测试库,旨在替代 XCTest 用于编写单元测试。文章详细介绍了如何开始使用 Swift Testing,如何使用它编写测试,以及如何将现有的 XCTest 测试迁移到新库中。

🐕 Environment & Preference Updates

@水水:本文讨论了 SwiftUI 的视图更新在环境和首选项更改方面的一些微妙之处,并通过简单的例子来一步步解释,感兴趣的读者可以通过本文示例代码进行验证 SwiftiUI 上的环境值、首选项和视图更新上的一些独特点(附视频)。

代码

🐕 Enable XcodeLLM for ChinaSKU Mac on macOS 15 Beta 1

@Kyle-Ye: Gist 中介绍了如何使用 lldb / DYLD_LIBRARY_INSERT 方式在 macOS 15 Beta 1 上给国行 Mac 设备启用 XcodeLLM 的方案。

警告:上述方式均需要关闭 SIP,请提前了解关闭系统完整性保护的风险再操作。

🐎 分析 XPC 通信的图形界面

@Damien: XPC 是 macOS / iOS 安全研究无法忽视的一个点,本项目是模仿 Wireshark 的界面,提供图形界面分析用户态进程之间的通信。

音视频

🐢 So You Think You Know Git Part 2 - DevWorld 2024

@BluesJiang: 这个视频介绍了很多 Git 的高级用法,比如 git switch、 Git rebase, git LFS,git scalar,git worktree,gitbutler 等高级用法。里面对每一个功能都做了简要的说明,可以根据自己的兴趣酌情观看。

比较有特点的是 git scalar 一个为大 git 仓库做了优化的 git 命令,git worktree、gitbutler 能让你在同一个仓库里快速切换功能分支,加速你多 feature、bugfix 的开发。

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #293 | 2024-06-17

17 Jun 02:10
Compare
Choose a tag to compare

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

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

新手推荐

🐎 Bad practice: not using a ButtonStyle

@Kyle-Ye: 本文介绍了一些不使用 ButtonStyle 的 bad case,一篇关于 SwiftUI ButtonStyle 的入门科普。

文章

🌟 🐕 QQ 客户端性能稳定性防劣化系统 Hodor 技术方案

@JonyFang: 手 Q 的防劣化系统命名为 Hodor 系统,从 2021 年 10 月开始研发,历时近三年迭代至今。系统涉及验证闭环、群控机架搭建等复杂过程,包含不少行业内独创方案。与厂商合作进行底层问题沟通,并在 2024 年拓展至 QQ 桌面客户端。系统目前已在 QQ 各平台落地,方案可做借鉴。

🐎 Comparing Swift Compiler Performance on Type Inference Part I Strings, Numbers, Arrays, Dictionaries and Constructables

@kemchenj: 这篇文章比较了 Swift 编译器在进行类型推断时的性能,特别是在字符串、数字、数组、字典和可构建类型的初始化方面。作者通过基准测试发现,使用未类型化的字面量初始化通常最快,而使用 .init() 的方式最慢。特别是在复杂上下文中,例如计算属性,.init() 的性能下降明显。文章还指出,不同版本的 Xcode 在编译性能上的差异,并提出了优化编译时间的具体建议。

🐎 iOS 18: Notable UIKit Additions

@Kyle-Ye: 本文介绍了 iOS 18 中 UIKit 一些值得注意的新增功能 :

  • 自动 Trait 跟踪 : UIKit 会自动检测某些生命周期函数中涉及的 Trait 变化 , 并调用相应的更新函数,减少了开发者需要手动注册特征变化监听的代码。
  • UIUpdateLink: UIUpdateLink 提供了比 CADisplayLink 更好的性能和电池效率 , 可用于复杂动画和绘制应用程序。
  • 更多符号动画 : 新增了摇摆、呼吸和旋转等三种新的符号动画效果。
  • 自定义文本格式化 : 开发者可以自定义文本编辑器中显示的格式化工具,默认关闭需要手动 opt-in。

🐎 Rust - 性能超越 Kotlin 的跨平台方案

@Smallfly:这篇文章讨论了跨平台开发技术,指出 Rust 由于内存安全、并发安全和 WebAssembly 支持,成为 C/C++ 的替代品,特别适合处理跨平台业务逻辑。文章分析了桥接、IPC 和 Canvas 绘制等跨平台方案,并提出使用 Rust 作为「前端中的后端」,通过 protobuf 等高效序列化方式与原生平台通信。Rust 在性能上超越 Kotlin Native,适合开发底层库。作者建议 Rust 可替代 C++ 用于跨平台开发,提供更现代的语法和更安全的代码。

代码

🌟 🐕 o3d

@Damien: o3d 是一款 Flutter 3D 渲染插件,它是一个能够在 Flutter 上渲染 glTF 和 GLB 格式 3D 模型的 widget 插件,支持 Android,IOS,Web 三个平台,不仅支持加载本地文件,而且支持加载在线文件。

🐎 swift-testing-revolutionary

@DylanYang: swift-testing-revolutionary 是一个 Xcode 插件,可以帮助开发者快速将自己现有项目中的的 XCTest 框架的测试代码自动迁移到苹果最新推出的 swift-testing 测试框架中,插件支持了大部分的代码转化,但仍有小部分需要人工处理。你也可以通过 Command Plugin 或者命令行工具来使用它。

Cocoapods-sled 让 iOS 组件二进制化变得简单

@莲叔:二进制化是加快编译速度的常见手段,很多大厂在这个方向都做过不小的研究。但目前行业上还缺乏比较泛用的方案。cocoapods —— sled 这个插件就是为了解决这个问题,能针对 pod 进行二进制化并且能灵活的切换二进制和源码构建。有类似需求的小伙伴可以试试。

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #292 | 2024-06-10

11 Jun 02:02
Compare
Choose a tag to compare

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

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

新闻

🌟 【老司机技术出品】 WWDC24 内参目录(更新中)

今年我们如期带来 Session 的汇总,并会在每天推送当天新放出的 Session ,欢迎大家关注更新。

文章

🌟 🐕 What Does spacing = nil Mean in SwiftUI? 

@zoeGuo:作者通过探讨子视图间不一致的间距问题,深入分析了 spacing 参数的默认值 nil 所代表的含义。作者从“是什么”、“为什么”、“怎么用”的角度,分析了 SwiftUI 中 spacing 的构成和原理。对开发者在处理复杂布局、追求 UI 细节时有很大帮助,掌握一些 spacing 技巧也能帮助实现一些用传统方法难以达到的布局效果。

🐎 How Do You Know Whether or Not SwiftUI Previews and Preview Content Are Excluded From App Store Builds?

@Kyle-Ye: 部分同学写 Preview 代码可能没有加 #if DEBUG 的习惯,理想情况下也确实不用加。Preview 代码不会被实际上游代码引用,因此直觉是不用 #if DEBUG 也不会出现在最终代码中。本文介绍了目前 SwiftUI Preview + Xcode 的一些 bad case,并建议大家目前对于 Preview 代码还是保持写 #if DEBUG

🐎 Do NOT init State externally in SwiftUI

@JonyFang: 这篇文章详细解析了为何不应在 SwiftUI 中外部初始化 State,并提供内联初始化的正确姿势及其他解决方案,避免视图更新问题。

🐎 Swift 集成 KSCrash IOS 崩溃跟踪

@kemchenj:本篇文章讲解了在 Swift 项目中集成 KSCrash 进行 iOS 应用崩溃日志跟踪的方法,并提供了将日志输出到指定文件的解决方案。作者详细介绍了 KSCrash 的配置和自定义输出文件的实现步骤,包含代码示例,帮助开发者更好地管理和分析应用崩溃信息。

推荐人:PBK-B

🐕 Boost Performance by Over 100x Using the Accelerate Framework

@BluesJiang:这篇文章简单介绍了苹果自带的框架 Accelerate 的应用范围和作用。因为 Accelerate 框架是比较集中在数据特定领域的加速框架,比如视频、图片、音频、科学计算等,所以了解的人不多。本文给出了他们使用 Accelerate 框架的两个应用,并且已经开源,发现这个框架相比于市面上泛用的 C++ 框架有这个更好的计算性能和能效优势,解决了他们在使用常规并行计算时依旧会产生的延迟,并且也显著降低了内存消耗。这个得益于 Accelerate 针对苹果设备的高度优化,并且是苹果自己也在使用的高性能计算框架。
如果你也有类似的实时计算需求,不妨研究一下这个框架,说不定有意外之喜。

🐎 Designing a Declarative API

@DylanYang:本文作者通过开发一个对用户输入进行验证的 Validator 的例子,一步步为大家揭示了如何去设计一个声明式风格的 API。对于不太了解声明式编程的同学来说 SwiftUI 就是一个非常典型的声明式的开发框架。作者对于设计声明式 API 的一个重要思想就是,我们应该优先聚焦在最终的代码应该如何被展现的逻辑和结构上,然后才轮到讨论具体的控制流。同时作者也通过例子证明了声明式编程可以和 UI 无关,也并不一定意味着包含链式调用。

🐕 几个在 SwiftUI 中使用惰性容器的技巧和注意事项

@AidenRao: 这篇文章介绍了在 SwiftUI 中使用惰性容器的几个技巧和注意事项。惰性容器如 List 和 LazyVStack 在展示大型数据集时非常高效,它们只在需要时动态构建和加载视图,从而提升应用性能和内存利用效率。文章提到了自定义遵循 RandomAccessCollection 协议的数据类型,以优化数据源的性能和内存使用。此外,还介绍了实现无限数据加载的方法,以及 id 修饰器对 List 懒加载机制的影响等。这些技巧和注意事项能够使开发者在 SwiftUI 中保持流畅的用户体验和高效的资源使用。

代码

🌟 🐕 ZippyFormat

@EyreFree: ZippyFormat 是一个更快版本的 NSString stringWithFormat 方法,在 iOS 端可以显著提升字符串格式化的性能。它通过直接将格式化参数追加到 char* 缓冲区,并仅在最后创建 NSString 来优化性能。ZippyFormat 还利用堆栈来避免 NSMutableString 产生的中间堆分配。此外,它在追加格式化参数时无需执行验证,因为已经知道数据是有效的 UTF-8。对于常见的 %@ 参数如 NSNumber、NSDictionary、NSArray 等,ZippyFormat 通过直接复制已知的输出到缓冲区,避免了调用 [object description] 的开销。总的来说 ZippyFormat 通过在较低层次上操作,避免了 Apple 原生实现中不必要的抽象和验证,从而显著提升了字符串格式化的速度。它是一个非常值得尝试的性能优化工具。

内推

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

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

关注我们

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

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

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

说明

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

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

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

03 Jun 02:31
Compare
Choose a tag to compare

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

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

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

文章

🌟 🐕 深入理解内存分配

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

🐕 🌟 Tricking iOS Into Animating App Icons

@水水:如何让你的 APP 图标动起来?这是一个很有意思的事情,文本作者从系统提供的切换 APP 图标 的 API 实现中,一步步通过反编译,解决了弹框提醒、进入后台等问题,实现了 APP 的动态图标。并附带有 Github Demo 实现 AnimatedAppIcons,效果如下:

🐕 Copy on Write Performance Measurements

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

🐢 Build your next website in Swift

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

🐕 Always correct gradient text in UIKit

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

🐢 一文搞懂七种基本的 GC 垃圾回收算法

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

音视频

WWDC Index

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

Developing An Inclusive Mindset

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

内推

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

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

关注我们

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

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

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

说明

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

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

老司机 iOS 周报 #290 | 2024-05-27

27 May 02:24
Compare
Choose a tag to compare

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

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

新闻

Incorrect bundle purchase payments: Fixed!

作者 5 月初发现苹果从 24 年 2 月起,对于应用内包含了 App 套装销售(Offering app bundles) 的 App ,会少给予开发者一份原本 App 的购买费用,即:错误地从 App 套装销售 的购买收益中两次减去了之前购买的应用程序的价格。

在作者提交了反馈后,苹果回电问题已被发现,所有受影响的开发者将得到对应损失的补偿。

文章

🐢 探讨跨平台技术与跨平台 UI 框架及 Kotlin Multiplatform 在 bilibili 的实践

@JonyFang: 本文以相对客观的事实数据比对了目前移动领域的多个跨平台语言的横评,也相对主观的针对当前的大环境下的一些跨平台技术的思考及 B 站的选型做了一些解读。希望可以为读者开阔思路,也希望如果能拉拢到同样观点的大佬们共同一起反哺基于 Kotlin 跨平台的生态的建设。从而做到社区全局收益。后续 B 站会持续继续输出关于 KMP 技术的技术及实践的深度文章,也会持续关注跨平台技术的发展,希望能够在这个领域有更多的交流。

🐎 Is Dynamic Isolation Bad?

@zoeGuo:文章讨论了 Swift 并发中的动态隔离与静态隔离的区别和应用。静态隔离通过使用像 nonisolated,isolated,actor, 和 global actor 这样的关键字来标记类或代码块,确保它们在编译时就定义好运行环境,是由编译器来处理的隔离。动态隔离使用运行时结构如锁来实现,需要在运行时正确地协调。文中举例用两种方式实现原子性,静态隔离固然安全,但动态隔离灵活便捷,要选择合适的方式解决并发问题。

🐕 Faster Git checkouts on NFS and SSD with parallelism

@AidenRao: 本篇文章主要介绍在大型存储库上使用并行 checkout 功能,此功能可将某些 checkout 操作在 SSD 上的速度提高 3.6 倍,在 NFS 挂载上的速度提高 4.5 倍。且所有使用到 checkout 机制的 git 命令都能收益,包括:clone, reset, switch, restore, merge 等。

🐕 计算机系统篇之链接(15):共享库拦截技术之运行时库打桩

@Damien: 本文主要讨论了 Linux 系统中的运行时库打桩技术,这是一种允许截获对共享库函数的调用,取而代之执行自己代码的技术。文章详细解释了运行时库打桩的实现原理,以及如何在加载程序时拦截标准库的 API(以 malloc/free 为例)的实现过程。

Scaling ChatGPT: Five Real-World Engineering Challenges

@老驴:这篇文章是采访了来自 OpenAI 的 Evan Morikawa,讲述了他们在爆炸增长的用户量下,是怎么解决一些难以解决的问题工程问题的。

他主要提到了下面的几点:

  1. KV 缓存和 GPU RAM 的管理。
  2. 批处理大小的优化。
  3. 正确的度量指标。
  4. 寻找 GPU 资源。
  5. 缺乏自动扩展的能力。

这些问题在比较早期的公司都比较容易遇到,但是像 OpenAI 这次这么快速爆炸的用户量增长,应该也算是比较少见的了。如果对 OpenAI 感兴趣的同学,建议读一读原文。

代码

HandVector

@BluesJiang:这个是一个在 VisionOS 平台上实现手势识别的开源库。主要是通过 ARKit 拿到手部骨骼节点后,通过余弦相似的算法,来评估手部骨骼节点与目标手势的相似度,以此来支持手势识别。还可以预先录制自己期望的手势作为匹配目标,实现任意手势的识别和匹配。
本开源库还介绍了一种如何在模拟器中调试手势识别算法的方法,因为官方模拟器并没有提供访问摄像识别手势的能力。方案主要是使用 Google 的 MediaPipes 来代替 Vision Pro 真机上的手势识别能力,然后将数据投入 Swift 代码中进行测试。
这个也是少有的在 Swift Native 侧开源的基础算法仓库之一,可以提供参考和借鉴。

【 iOS 】 Apple 增强现实(Apple Augmented Reality)「上卷」「下卷

@Smallfly:这是一本 raywenderlich 出品的 AR 教程,国内的同学翻译。这本书是为初中级 iOS 开发者设计的,旨在帮助读者使用 Swift 构建苹果平台上的沉浸式增强现实(AR)体验。

书中涵盖了以下主题:

  • Reality Composer & Reality Files: 学习如何使用 Reality Composer 创建 AR 体验,以及如何使用 Reality Converter 和 USDZ 文件。
  • RealityKit: 一个用于构建丰富 AR 体验的框架。
  • Facial Blend Shapes: 学习如何使用面部融合形状来创建反应用户面部表情的 AR 面具。
  • ARKit: 苹果的 AR 开发框架,用于创建交互式 AR 体验。
  • Raycasting & Physics: 学习如何在 AR 应用中使用射线投射和物理引擎。
  • ECS & Collaborative Experiences: 探索如何创建多人共享的 AR 体验。

书籍分为多个部分,每个部分都通过项目来教授特定的技能和概念。例如,使用 Reality Composer 创建交互式虚拟鼓套件,使用图像锚点和跟踪创建交互式 AR 商务名片,以及使用 RealityKit 和面部跟踪创建类似 Snapchat 的面部滤镜应用等。

如果你对 AR 开发感兴趣,可以直接访问提供的链接。

【 iOS 】并发(Concurrency)

@DylanYang:这是一本 raywenderlich 出品的 iOS 并发(Concurrency)教程,国内的同学翻译。这本书能够帮助 iOS 初学者理解并发的概念,并且快速上手实践。需要注意的是,这本书中讲述的并发是以 GCD(Grand Central Dispatch)实现的,而非最新的 Swift 并发框架(Swift Concurrency),考虑到 GCD 依然是当前的主流,这本书非常值得一读。

书籍分为多个章节,详细解释了并发的概念,以及 GCD 和 Operations 的原理和实际使用的方式。本书使用了诸多的代码示例使读者便于理解,尤其是最后通过 CoreData 的案例展现了并发如何在实际中应用。除此之外,本外也讲述了如何通过 Thread Sanitizer 来分析并发中常见的数据竞争问题。

整体而言,这是一本内容翔实的并发教程,感兴趣的读者可以收藏后反复品读。

内推

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

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

关注我们

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

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

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

说明

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

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