# 老司机 iOS 周报 #214 | 2022-08-22

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

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

## 文章

### 🐎 [iOS 中的字节对齐](https://juejin.cn/post/7132403137725333518)

[@Smallfly](https://github.com/iostalks)：字节对齐是 C 语言中的概念，Objective-C 作为 C 语言的超集，iOS 开发者也需要对字节对齐有所了解。本文给出了一些字节对齐的建议，以及字节对齐的相关介绍：

- 什么是字节对齐
- 为什么要字节对齐
- 字节不对齐的风险
- 字节对齐对编程的启示
- Objective-C 字节对齐实现

### 🐕 [iOS 底层原理 39：Instruments 系列（三）Animation Hitches](https://mp.weixin.qq.com/s/fTmgN5phGQtbQOUHZ7Pe3Q)

[@Leo](https://github.com/leomobiledeveloper)：由于高刷屏和动态帧率的设备出现，用 FPS 来衡量界面的流畅性已经不那么准确了，所以 Apple 提出了 Animation Hitche 这个概念来衡量滑动期间的掉帧情况。本文详细讲解了界面渲染的阶段和原理，并且涵盖了不同阶段引起 Hitche 的原因和解决办法，对流畅性优化有非常好的参考意义。

### 🐢 [网络通信 | HTTP(S) 那些事儿](https://mp.weixin.qq.com/s/YtyrIl8UWK43iYfjN4HUyQ)

[@AidenRao](https://weibo.com/AidenRao)：HTTP 在整个互联网是非常常见的，比如我们看剧、刷短视频、面向 Google 编程，都会用到它。作为研发，我们有义务深入了解它的结构、规范和设计思路。看完本文你将能够：

1. 🔍 快速定位 HTTP 问题；
2. 🥣 熟悉 HTTP 报文里的常见头字段；
3. 🔐了解基本的加密知识。

最终拥有通过 WireShark、Chrome、Telnet 等工具，甚至 RFC 文档去自行深入学习 HTTP 的能力。

### 🐕 [iOS 16 NSURLComponents 行为变更]

[@极速男孩](https://github.com/ztlyyznf001)：在 HTTPURL 的 [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) 规范中规定，URL 中只允许包含以下四种：
1. 英文字母
2. 数字
3. ``-_.~`` 4 个特殊字符
4. 所有保留字符，包括 ! * ’ ( ) ; : @ & = + $ , / ? # [ ]

并且要求在使用特殊字符的时候将特殊字符转换成相应十六进制。
所以在 iOS16 中如果你使用
```[NSURLComponents componentsWithString:]``` 
或者
```[NSURLComponents componentsWithURL:resolvingAgainstBaseURL]```
的方法去构建一个不符合 RFC3986 规范的 URL（常见的比如 URL 中包含 - 或者 _ ）时会直接返回一个 nil。

### 🐕 [Flutter 状态管理新的实践](https://mp.weixin.qq.com/s/oNjRt2qGHetEXLtkDPU63A)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): 声明式 UI 其实并不是近几年的新技术，但是近几年声明式 UI 框架非常的火热。单说移动端，跨平台方案有：RN、Flutter。iOS 原生有：SwiftUI。android 原生有：compose。Flutter 平台上就有多种方案，BLoc，Provider，RivePod，GetX 等。本文从函数编程方向做新尝试，是一份不错的学习资料。小编建议，对于 Rx 系列框架不熟悉的，不要轻易放到生产环境中 .


## 工具

### 🐎 [Xcode console 替代方案 - ConsoleRedirect](https://github.com/luoqisheng/ConsoleRedirect)

[@水水](https://www.xuyanlan.com): ConsoleRedirect 是一款通过 redirect App 的 stderr 和 stdoutput 将 Xcode 的输出实时同步写到 macosx 下指定目录的工具。配合 klogg 等日志查看工具，可以实时查看、过滤、查找、高亮 Xcode 的控制台输出。用于代替功能比较单薄的 Xcode 控制台输出，操作比较简单，有需要的朋友可以一试。

### [Pulse 2.0 released](https://kean.blog/post/pulse-2)

[@kemchenj](https://kemchenj.github.io)：Pulse 是一个 Apple 平台的开源日志框架，不止提供了 AppKit/UIKit 集成，也提供了可视化的工具 App 查看日志。最近推出了 2.0 版本，进行了大量重写，包括了：

- 新增 macOS/watchOS/tvOS 的日志查看工具，使用 SwiftUI 实现。
- 性能提升：
    - 日志存储空间减少 90%。使用苹果提供的 lzfse 进行压缩，并且使用 SHA1 替代之前的 SHA256。
    - 日志的预览图改为小尺寸的缩略图，并且使用 HEIF 编码，以 Demo 为例减少了 99% 的存储占用。
    - 文档格式优化。允许控制分享的时间范围，并且使用 lzfse 替代 ZIPFoundation，可以减少分享的文件大小。
- 文档重写，使用 DocC 进行生成。

## 摸鱼周报

[@摸鱼周报 #65](https://mp.weixin.qq.com/s/lvMHf5qQHpnDGLz1KY-2dg)：第 65 期摸鱼周报来了，一起来看下本期概要：

* 本期话题：App Accelerator 分享会 & 什么是精准测试
* 本周学习：iOS Memory 内存概念 
* 内容推荐：Swift 内容推荐 & Github 实用技巧
* 摸一下鱼：两款动态图片生成器，iOS 16 Beta 6 和 iPhone 14 发布日期确认，系统设计课程以及 Go 语言教程，IAP 服务端通知状态码变化流程。

## 关注我们

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

**关注有礼，关注【老司机技术周报】，回复「2021」，领取 2017/2018/2019/2020 内参**

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

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

## 说明

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

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
