本期概要
- 话题: Xcode 13.2 和 iOS 15.2 的正式版值得关注的几项新功能。
- Tips:内存相关的一些机制。
- 面试模块:dealloc 在哪个线程执行;NSString *str = @"123" 这里的 str 和 "123" 分别存储在哪个区域。
- 优秀博客:SwiftUI 相关的几篇优秀博客。
- 学习资料:软件随想录,Joel Spolsky 的 Blog 纸质版文集。
- 开发工具:Dropshelf,一款 Mac OS 下的拖拽效率应用。
本期话题
@zhangferry:12 月 13 号,Apple 发布了 Xcode 13.2 和 iOS 15.2 的正式版。其中有几项新功能值得关注。
Xcode 13.2
编译系统和 Swift 编译器有了一个新模式可以充分利用 CPU 核心,以达到优化 Swift 项目的效果。该模式可选,可以执行如下命令打开:
bash defaults write com.apple.dt.XCBuild EnableSwiftBuildSystemIntegration 1
iOS 15.2
是关于 StoreKit 的新特性:
- StoreKit 中展示退款请求的弹窗可以在 Xcode 中进行测试了。UIKit 模式下可利用:
beginRefundRequest(in:)
或者beginRefundRequest(for:in:)
,SwiftUI 下可利用refundRequestSheet(for:isPresented:onDismiss:)
作为视图修饰器。 StoreKit 中管理订阅的弹窗也可以在 Xcode 中进行测试了。 UIKit 模式下课利用
showManageSubscriptions(in:)
,SwiftUI 下可利用manageSubscriptionsSheet(isPresented:)
作为视图修饰器完成。新的
SKTestSession.TimeRate
值可用于 StoreKit Test 模块的自动化测试。
开发Tips
整理编辑:zhangferry
内存相关的一些机制
虚拟内存寻址
为了安全性,防止物理内存被篡写(还有其他很多优势),操作系统引入了虚拟内存机制,虚拟内存是对物理内存的映射,操作系统会为每个进程提供一个连续并且私有的虚拟内存空间。
实际的数据读写首先要通过虚拟地址找到对应的物理地址,这个过程就是 CPU 寻址,CPU 寻址由位于 CPU 的 MMU(Memory Management Unit 内存管理单元)负责。
为了便于管理,虚拟内存被分割为大小固定的虚拟页(Virtual Page, VP)。程序加载过程中,虚拟内存由磁盘到内存的映射是以页为单位进行处理的。每次映射完成都会