|
1 | 1 | # 老司机 iOS 周报 #285 | 2024-04-15 |
2 | 2 |
|
3 | | - |
| 3 | + |
4 | 4 | 老司机 iOS 周报,只为你呈现有价值的信息。 |
5 | 5 |
|
6 | 6 | 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 |
7 | 7 |
|
8 | 8 | ## 新闻 |
9 | 9 |
|
10 | | -### [iOS 17.4/17.4.1 新安装的用户首次启动IDFA权限获取失败,以及 workaround](https://forums.developer.apple.com/forums/thread/746432?answerId=784610022#784610022) |
| 10 | +### [iOS 17.4/17.4.1 新安装的用户首次启动 IDFA 权限获取失败,以及 workaround](https://forums.developer.apple.com/forums/thread/746432?answerId=784610022#784610022) |
11 | 11 |
|
12 | 12 | 首次新安装 APP 的用户会在通过 ``ATTrackingManager.requestTrackingAuthorization()`` 申请 IDFA 的时候自动失败(即使用户还没有手动点击拒绝),这会对依赖 IDFA 归因或者正在投放的 APP 造成一定影响,论坛也已经有同学给出 workaround(通过 IDFA 弹窗在关闭时会触发 ``UIApplication.didBecomeActiveNotification`` 进行再次判断)。 |
13 | 13 |
|
14 | | -## Developer - 设计开发加速器 |
15 | | - |
16 | | -> 设计开发加速器相关活动 |
17 | | -
|
18 | | -## 新手推荐 |
19 | | - |
20 | | -> 收集一些对新手友好且质量不错的文章 |
21 | | -
|
22 | 14 | ## 文章 |
23 | 15 |
|
24 | | -### 🐕 [五年沉淀,微信全平台终端数据库WCDB迎来重大升级!](https://mp.weixin.qq.com/s/RWCqLD0M_WGCrCcz0oQIcQ) |
| 16 | +### 🌟 🐕 [五年沉淀,微信全平台终端数据库 WCDB 迎来重大升级!](https://mp.weixin.qq.com/s/RWCqLD0M_WGCrCcz0oQIcQ) |
25 | 17 |
|
26 | 18 | [@JonyFang](https://github.com/JonyFang):在接口层面,新版 WCDB 全面支持了 C++、Java、Kotlin、Swift 和 ObjC 这五种主要的终端开发语言,覆盖了 Android、iOS、Windows 、macOS 和 Linux 这五大终端平台。同时,还对 Winq 进行了重写和强化,使开发者能够在各种语言中使用原生语法编写任意 SQL。 |
27 | 19 |
|
|
38 | 30 |
|
39 | 31 | [@水水](https://www.xuyanlan.com/categories/iOS/):本文记录了作者由于对更平滑滚动的追求而将 LazyVGrid 替换为 NSTableView 的过程,可以见到结果是 NSTableView 确实会有更丝滑的效果,不过作者并不是希望大家认为 SwiftUI 很慢而 AppKit 很快,或者 macOS 上的 SwiftUI 还没有为重要的应用程序做好准备,事实上作者重写过程中 SwiftUI 已经解决了部分问题。最后作者聊了对 AppKit 的非官方见解和反思,也希望大家对两种技术都有着同样的热爱。 |
40 | 32 |
|
41 | | -## 工具 |
| 33 | +### 🐎 [Exploring ABI stability, @frozen, and library evolution mode](https://digitalbunker.dev/understanding-frozen-in-swift/) |
42 | 34 |
|
43 | | -> 开发过程中常用的工具,及一些新工具的介绍 |
| 35 | +[@DylanYang](https://github.com/Dylan19Yang):本文作者通过 `@frozen` 关键字,引申出 Swift 的 ABI 稳定和 library evolution mode。其中 `@frozen` 关键字确保了 `enums` 和 `structs` 的接口不再改变,因此也保证了内存布局的固定,带来了更好的性能。ABI 稳定则使得面得不同的语言版本,swift 库不再需要每次重新编译就可以兼容高版本。而 library evolution mode 是一个编译器能力,开启它后使得编译器会产出额外的用于描述关于库的数据结构、方法等的元数据,确保在不同的语言版本下,这些数据依然保持一致。这三者共同确保了 Swift 库在不同语言版本、不同操作系统版本下的兼容性,并最终带来了更好的的开发体验。 |
44 | 36 |
|
45 | | -### 🐕 [Mac OS X Debugging Magic](https://web.archive.org/web/20101206131250/http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html) |
| 37 | +## 工具 |
46 | 38 |
|
47 | | -[@Cooper Chen](https://github.com/cjlcooper):在 MacOS 开发中,Apple 提供了许多调试工具,以协助开发者针对特定场景进行开发和调试。这些工具中的许多被保留在发布的系统中,供开发者使用以调试其代码。下面列举了一些在 Mac OS X 中的“秘密”调试工具,包括环境变量、首选项、可从GDB调用的例程以及特殊文件等。若你正致力于 Mac OS X 软件开发,这个调试工具集合列表将极具帮助。 |
| 39 | +### 🐕 [Mac OS X Debugging Magic](https://web.archive.org/web/20101206131250/http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html) |
48 | 40 |
|
49 | | -### 🐎 [Exploring ABI stability, @frozen, and library evolution mode](https://digitalbunker.dev/understanding-frozen-in-swift/) |
| 41 | +[@Cooper Chen](https://github.com/cjlcooper):在 MacOS 开发中,Apple 提供了许多调试工具,以协助开发者针对特定场景进行开发和调试。这些工具中的许多被保留在发布的系统中,供开发者使用以调试其代码。下面列举了一些在 Mac OS X 中的“秘密”调试工具,包括环境变量、首选项、可从 GDB 调用的例程以及特殊文件等。若你正致力于 Mac OS X 软件开发,这个调试工具集合列表将极具帮助。 |
50 | 42 |
|
51 | | -[@DylanYang](https://github.com/Dylan19Yang):本文作者通过 `@frozen` 关键字,引申出 Swift 的 ABI 稳定和 library evolution mode。其中 `@frozen` 关键字确保了 `enums` 和 `structs` 的接口不再改变,因此也保证了内存布局的固定,带来了更好的性能。ABI 稳定则使得面得不同的语言版本,swift 库不再需要每次重新编译就可以兼容高版本。而 library evolution mode 是一个编译器能力,开启它后使得编译器会产出额外的用于描述关于库的数据结构、方法等的元数据,确保在不同的语言版本下,这些数据依然保持一致。这三者共同确保了 Swift 库在不同语言版本、不同操作系统版本下的兼容性,并最终带来了更好的的开发体验。 |
52 | 43 |
|
53 | 44 | ## 代码 |
54 | 45 |
|
55 | | -> 库,代码段,开源app |
56 | | -
|
57 | 46 | ### 🐕 COW Macro Package |
58 | 47 |
|
59 | | -[@Kyle-Ye](https://github.com/Kyle-Ye) Swift 的大量标准库内的 struct 出于性能等因素考虑都进行了 Copy On Write(后简称COW)优化(如 String、Array、Set、Dictionary),但是对于业务自定义的 struct 默认没有此类优化。 |
| 48 | +[@Kyle-Ye](https://github.com/Kyle-Ye) Swift 的大量标准库内的 struct 出于性能等因素考虑都进行了 Copy On Write(后简称 COW)优化(如 String、Array、Set、Dictionary),但是对于业务自定义的 struct 默认没有此类优化。 |
60 | 49 |
|
61 | 50 | 因此如果业务定义了一个巨大的 struct,在此 struct 作为参数传递过程中,容易产生较大的包大小并且有一定性能影响。 |
62 | 51 |
|
63 | | -对于每个希望开启 COW 的 struct 进行手写优化较为繁琐,下面是本期推荐的两个相关COW Macro的开源库,可以帮助我们快速 opt-in 此项优化。 |
| 52 | +对于每个希望开启 COW 的 struct 进行手写优化较为繁琐,下面是本期推荐的两个相关 COW Macro 的开源库,可以帮助我们快速 opt-in 此项优化。 |
64 | 53 |
|
65 | 54 | - https://github.com/wezzard/COWMacro |
66 | 55 | - https://github.com/Swift-CowBox/Swift-CowBox |
67 | 56 |
|
68 | | -## 书 |
69 | | - |
70 | | -> 比较不错的书的推荐和书评 |
71 | | -
|
72 | | -## 音视频 |
73 | | - |
74 | | -> 比较不错的书的推荐和书评 |
75 | | -
|
76 | 57 | ## 内推 |
77 | 58 |
|
78 | 59 | 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 |
|
0 commit comments