Skip to content
Calvin's Blog

摸鱼精选第 23 期

Nov 15, 2022 — Reading

其他信号不同,SIGKILL 不可被捕获,这是 Linux/Mach 内核的限制,为了让操作系统在程序无法响应的时候,可以从上一层控制进程的生命周期。自 iOS 13 后,引入了 MetricKit 框架,可以用来汇总和分析有关异常和崩溃诊断以及电源和性能。本文即介绍了如何使用 MetricKit 收集 SIGKILL 信号量、获取崩溃信息,基于 Code 的含义解析 SIGKILL 日志的过程。最后,也介绍了百度 App 常见的 SIGKILL 问题。

Swift Concurrency 提供了一种非常好的编写异步代码的方法,同时它也被宣传为使用安全。然而不幸的是 Swift Concurrency 编程有很多陷阱,而且编译器不会检查所有东西

SwiftUI 显示 sheet 有两种形式,主要是第一个参数的类型不一样:

常见的是 Bool 类型的 @State.sheet(isPresented: $hidden) {}。 另一种是遵循 Identifiable 协议的类型:.sheet(item: $show) { item in }

作者尝试在 SwiftUI 中应用 MVVM 模式,跟 UIKit 中的应用有些许差别,可借鉴一下。

集合(Collection)是编程语言常用的类型,Swift 集合是值类型的,对于复杂的集合数据,频繁拷贝可能会带来性能问题。本文通过一个数独算法,介绍如何对数组做优化,主要利用了 some 关键字配合 Swift 5.7 协议支持关联类型的新特性实现。想了解更多请参考 SE-0346 (opens in a new window)

来自宝岛台湾的小姐姐 ChaoCode 从 Youtube (opens in a new window) 入驻 B 站,从基础的 Swift 语法到中级 Swift 内容、 SwiftUI、用 Swift 制作完整 App 等都有,比较适合入门学习 Swift,感兴趣的朋友可以关注。

内存管理也是操作系统的核心功能之一,本文主要讲解了 Linux 系统下内存管理技术,是一篇不错的科普文,主要包含以下四部分:

基础重要吗?原理有必要学吗?

每个人都有自己的观点,但我的观点跟作者一样,那些底层原理对业务上没有直接影响,不懂浏览器原理,照样可以把 Web 页面做的很漂亮。但是原理就跟内功一样,练到位了,手中剑就不一定是剑了,还可以是棍、枪、刀。

Task 的底层实现是线程池,最大线程数为 CPU 核数。

内存安全漏洞是最常见,最广泛利用的漏洞问题,并且当今几乎所有流行的用户设备都依赖于用 C 和 C++ 等被认为 “内存不安全” 的编程语言编写的核心系统代码,本文来自 Apple 官方安全工程与架构团队文章,向大众展示了苹果在解决内存安全漏洞方面的努力,本文会从以下几个角度为我们完整的介绍了新的一代内存分配器 kalloc_type:

本文是安全问题的系列文章内容的第一篇,感兴趣的同学可以订阅 Apple 官方 Blog。

结合作者的另一篇文章看看:Using the ‘some’ and ‘any’ keywords to reference generic protocols in Swift 5.7 (opens in a new window)

Swift 中 someany到底用哪个?尽量使用some

以前在使用 Combine 的时候,每个 Publisher 最后都要调用.eraseToAnyPublisher()转成 AnyPublisher。有了some关键字之后,就可以省略这一步了,直接返回some Publisher<User, Error>