Skip to content

Commit

Permalink
feat: 285 期整理
Browse files Browse the repository at this point in the history
  • Loading branch information
ChengzhiHuang committed Apr 14, 2024
1 parent a53e8d1 commit 9a5f280
Showing 1 changed file with 10 additions and 29 deletions.
39 changes: 10 additions & 29 deletions Reports/2024/#285-2024.04.15.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
# 老司机 iOS 周报 #285 | 2024-04-15

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

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

## 新闻

### [iOS 17.4/17.4.1 新安装的用户首次启动IDFA权限获取失败,以及 workaround](https://forums.developer.apple.com/forums/thread/746432?answerId=784610022#784610022)
### [iOS 17.4/17.4.1 新安装的用户首次启动 IDFA 权限获取失败,以及 workaround](https://forums.developer.apple.com/forums/thread/746432?answerId=784610022#784610022)

首次新安装 APP 的用户会在通过 ``ATTrackingManager.requestTrackingAuthorization()`` 申请 IDFA 的时候自动失败(即使用户还没有手动点击拒绝),这会对依赖 IDFA 归因或者正在投放的 APP 造成一定影响,论坛也已经有同学给出 workaround(通过 IDFA 弹窗在关闭时会触发 ``UIApplication.didBecomeActiveNotification`` 进行再次判断)。

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

> 设计开发加速器相关活动
## 新手推荐

> 收集一些对新手友好且质量不错的文章
## 文章

### 🐕 [五年沉淀,微信全平台终端数据库WCDB迎来重大升级](https://mp.weixin.qq.com/s/RWCqLD0M_WGCrCcz0oQIcQ)
### 🌟 🐕 [五年沉淀,微信全平台终端数据库 WCDB 迎来重大升级](https://mp.weixin.qq.com/s/RWCqLD0M_WGCrCcz0oQIcQ)

[@JonyFang](https://github.com/JonyFang):在接口层面,新版 WCDB 全面支持了 C++、Java、Kotlin、Swift 和 ObjC 这五种主要的终端开发语言,覆盖了 Android、iOS、Windows 、macOS 和 Linux 这五大终端平台。同时,还对 Winq 进行了重写和强化,使开发者能够在各种语言中使用原生语法编写任意 SQL。

Expand All @@ -38,41 +30,30 @@

[@水水](https://www.xuyanlan.com/categories/iOS/):本文记录了作者由于对更平滑滚动的追求而将 LazyVGrid 替换为 NSTableView 的过程,可以见到结果是 NSTableView 确实会有更丝滑的效果,不过作者并不是希望大家认为 SwiftUI 很慢而 AppKit 很快,或者 macOS 上的 SwiftUI 还没有为重要的应用程序做好准备,事实上作者重写过程中 SwiftUI 已经解决了部分问题。最后作者聊了对 AppKit 的非官方见解和反思,也希望大家对两种技术都有着同样的热爱。

## 工具
### 🐎 [Exploring ABI stability, @frozen, and library evolution mode](https://digitalbunker.dev/understanding-frozen-in-swift/)

> 开发过程中常用的工具,及一些新工具的介绍
[@DylanYang](https://github.com/Dylan19Yang):本文作者通过 `@frozen` 关键字,引申出 Swift 的 ABI 稳定和 library evolution mode。其中 `@frozen` 关键字确保了 `enums``structs` 的接口不再改变,因此也保证了内存布局的固定,带来了更好的性能。ABI 稳定则使得面得不同的语言版本,swift 库不再需要每次重新编译就可以兼容高版本。而 library evolution mode 是一个编译器能力,开启它后使得编译器会产出额外的用于描述关于库的数据结构、方法等的元数据,确保在不同的语言版本下,这些数据依然保持一致。这三者共同确保了 Swift 库在不同语言版本、不同操作系统版本下的兼容性,并最终带来了更好的的开发体验。

### 🐕 [Mac OS X Debugging Magic](https://web.archive.org/web/20101206131250/http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html)
## 工具

[@Cooper Chen](https://github.com/cjlcooper):在 MacOS 开发中,Apple 提供了许多调试工具,以协助开发者针对特定场景进行开发和调试。这些工具中的许多被保留在发布的系统中,供开发者使用以调试其代码。下面列举了一些在 Mac OS X 中的“秘密”调试工具,包括环境变量、首选项、可从GDB调用的例程以及特殊文件等。若你正致力于 Mac OS X 软件开发,这个调试工具集合列表将极具帮助。
### 🐕 [Mac OS X Debugging Magic](https://web.archive.org/web/20101206131250/http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html)

### 🐎 [Exploring ABI stability, @frozen, and library evolution mode](https://digitalbunker.dev/understanding-frozen-in-swift/)
[@Cooper Chen](https://github.com/cjlcooper):在 MacOS 开发中,Apple 提供了许多调试工具,以协助开发者针对特定场景进行开发和调试。这些工具中的许多被保留在发布的系统中,供开发者使用以调试其代码。下面列举了一些在 Mac OS X 中的“秘密”调试工具,包括环境变量、首选项、可从 GDB 调用的例程以及特殊文件等。若你正致力于 Mac OS X 软件开发,这个调试工具集合列表将极具帮助。

[@DylanYang](https://github.com/Dylan19Yang):本文作者通过 `@frozen` 关键字,引申出 Swift 的 ABI 稳定和 library evolution mode。其中 `@frozen` 关键字确保了 `enums``structs` 的接口不再改变,因此也保证了内存布局的固定,带来了更好的性能。ABI 稳定则使得面得不同的语言版本,swift 库不再需要每次重新编译就可以兼容高版本。而 library evolution mode 是一个编译器能力,开启它后使得编译器会产出额外的用于描述关于库的数据结构、方法等的元数据,确保在不同的语言版本下,这些数据依然保持一致。这三者共同确保了 Swift 库在不同语言版本、不同操作系统版本下的兼容性,并最终带来了更好的的开发体验。

## 代码

> 库,代码段,开源app
### 🐕 COW Macro Package

[@Kyle-Ye](https://github.com/Kyle-Ye) Swift 的大量标准库内的 struct 出于性能等因素考虑都进行了 Copy On Write(后简称COW)优化(如 String、Array、Set、Dictionary),但是对于业务自定义的 struct 默认没有此类优化。
[@Kyle-Ye](https://github.com/Kyle-Ye) Swift 的大量标准库内的 struct 出于性能等因素考虑都进行了 Copy On Write(后简称 COW)优化(如 String、Array、Set、Dictionary),但是对于业务自定义的 struct 默认没有此类优化。

因此如果业务定义了一个巨大的 struct,在此 struct 作为参数传递过程中,容易产生较大的包大小并且有一定性能影响。

对于每个希望开启 COW 的 struct 进行手写优化较为繁琐,下面是本期推荐的两个相关COW Macro的开源库,可以帮助我们快速 opt-in 此项优化。
对于每个希望开启 COW 的 struct 进行手写优化较为繁琐,下面是本期推荐的两个相关 COW Macro 的开源库,可以帮助我们快速 opt-in 此项优化。

- https://github.com/wezzard/COWMacro
- https://github.com/Swift-CowBox/Swift-CowBox

##

> 比较不错的书的推荐和书评
## 音视频

> 比较不错的书的推荐和书评
## 内推

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

0 comments on commit 9a5f280

Please sign in to comment.