老司机 iOS 周报 #144 | 2021-01-14

老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

WWDC20

本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!

新闻

The 2020 State of the OCTO—VERSE[1]

@Parsifal:GitHub 官方的 2020 年度报告,作为聚集了最多全球开发者的开源平台,GitHub 这次从社区、生产率以及安全三个方面,展示不同的数据来总结过去的 2020 年。

新手推荐

he different types of self in Swift[2]

@极速男孩:这篇文章简单的介绍了在 Swift 三种 self 的不同用法,包括 self. 前缀,.self 后缀和 self 类型。

文章

从 Weex 到Web,性能逆势如何破局?

@Damien:今年双十一飞猪会场从前端渲染引擎从 Weex 回归到 WebView,在迁移变化的同时,同时性能指标上的优化也不能落下,飞猪团队为了极致的性能体验,使用了端侧预渲染、服务端渲染、页面快照、SPA 单页应用模式以及资源&数据预缓存等方案来进行极致的优化,同时取得的效果也是很惊艳的:日常会场首屏耗时环比降低 25%,较 618 以及国庆会场首屏耗时环比降低 20%。对 WebView 优化相关的同学推荐阅读此文,或许可以找到灵感。

如何持续的自我提升

@J_Knight_:本文作者结合自己的实际学习案例分享了 “如何自我学习/提升”的问题,整体的学习思路如下:

  • 初识:被灌输知识的过程。
  • 思考:主动消化知识的过程。
  • 探索:手动进行研究的过程
  • 总结和超越:完成自我提升的过程

而且文章还提到了费曼学习法,感兴趣的读者可以阅读一下本文。

Preventing Data Races in the Swift Concurrency Model[3]

@享耳先森:并发一直是现代语言的重要部分,根据 Swift Roadmap,预计 Swift 6.0 将推出基于协程的 async/await 模型及新的 Actor Isolation 并发模型,Swift 核心成员 Doug 写了一篇文章,介绍 Swift 加入了新的并发模型之后,有哪些方式可以避免数据竞争。

参考:

  • Swift Concurrency Roadmap
  • Protocol-based Actor Isolation: Draft #2

8 Common SwiftUI Mistakes - and how to fix them[4]

@zvving:SwiftUI 之于 UIKit,就像 objc 之于 swift:二者在设计思想、具体实现方面有诸多关联,却又是底层逻辑完全不同、『推倒重建』的两类事物。

带着 UIKit 已有经验去学习 SwiftUI,能快速上手的同时也会掉一些不易察觉的坑:细节不符合预期、实现冗余、写法错误而不自知……本文作者总结了 SwiftUI 新手常犯的 8 类错误,解决问题的同时,帮助你更好的理解 SwiftUI 的独特之处。

更现代的 Swift API 设计

@EyreFree:Swift 是一门简洁同时富有表现力的语言,这其中隐藏着众多的设计细节。本文通过提出一个 Struct 的语义问题,在寻找答案的过程中逐步引出 DynamicMemberLookup 应用、PropertyWrapper(WWDC19 的 PropertyDelegate) 的实现原理以及 SwiftUI DSL 中 PropertyWrapper 的应用,来一起看看更现代的 API 背后的设计过程。希望这些理念能帮助你用 Swift 在项目中设计出更现代、清晰度更高的 API。

一文了解 Xcode 生成「静态库」和「动态库」 的流程

@JonyFang:本篇主要解答了 iOS App 的链接是由谁完成的。作者通过创建 Demo 来实践 Xcode 生成静态库动态库的流程,过程中分析 Report navigator 页面中详细的 Build(构建)日志,得到的结论是:

  • 只有在 动态库 的链接过程会依赖 clang Driver
  • 真正执行生成 静态库动态库 的任务的是 libtoolld64

工具

iSimulator[5]

@红纸:iSimulator 是一款用于操控 Xcode 模拟器的 GUI 工具,其包含基础增删模拟器、展示应用安装列表、快捷导航应用的 Sandbox/Bundle 文件夹、APP 多模拟器同步装载等多种功能。还在烦恼找不到模拟器安装、文件夹路径的小伙伴可以尝试一下此工具。

代码

滴滴DoKit For Flutter正式开源,功能及核心实现解读

@邦Ben:本文介绍了滴滴开源的 DoKit,DoKit 是一个针对 Flutter 的产研工具包,集成了各种丰富的小工具,UI、网络、内存、监控等等。本文也简单介绍了一下原理,但是实际实现方式还是仔细看代码更为确切。作为辅助类的工具,可以在调试方面提供到比较实时的反馈(例如测试找你反馈bug的时候,不用连个线去 debug 或者传日志一点点看),有需要可以一用。

  • Github 地址:https://github.com/didi/DoraemonKit/tree/master/Flutter
  • Pub 仓库地址:https://pub.dev/packages/dokit

https://mp.weixin.qq.com/s/7j6gNjSQE9Jxr1te1BbdIA

Axios 如何实现请求重试?

发布于:17天以前  |  66次阅读  |  详细内容 »

抖音 iOS 工程架构演进

发布于:22天以前  |  65次阅读  |  详细内容 »

【JS】625- Axios 如何缓存请求数据?

发布于:29天以前  |  87次阅读  |  详细内容 »

iOS中触摸事件的传递和响应分析

发布于:1月以前  |  101次阅读  |  详细内容 »

iOS中触摸事件的传递和响应分析

发布于:1月以前  |  114次阅读  |  详细内容 »

探索M1: 安装iOS版本微信/微信读书

发布于:1月以前  |  201次阅读  |  详细内容 »

iOS 稳定性问题治理:卡死崩溃监控原理及最佳实践

发布于:2月以前  |  168次阅读  |  详细内容 »

2021 给 iOS 开发者的一些建议

发布于:2月以前  |  283次阅读  |  详细内容 »

iOS 优化篇 - 启动优化之Clang插桩实现二进制重排

发布于:3月以前  |  281次阅读  |  详细内容 »

抖音品质建设 - iOS启动优化《实战篇》

发布于:3月以前  |  247次阅读  |  详细内容 »

iOS APP 图标版本化

在我们的项目开发过程中,需要频繁打包给测试人员去测试,有时候我们都不知道测试机上安装的版本是否是最新的,这样会造成很多不必要的麻烦和成本。因此我们需要将buildNumber以水印的方式打在APPIcon上,可以很直观的知道当前是哪一个版本。

发布于:3月以前  |  269次阅读  |  详细内容 »

如何实现一个HTTP请求库——axios源码阅读与分析

在前端开发过程中,我们经常会遇到需要发送异步请求的情况。而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率。

发布于:3月以前  |  261次阅读  |  详细内容 »

老司机 iOS 周报 #144 | 2021-01-14

发布于:3月以前  |  306次阅读  |  详细内容 »

快手,快影 iOS App反调试

发布于:4月以前  |  298次阅读  |  详细内容 »

优酷iOS插件化页面架构方法

随着业务不停地迭代,优酷 APP 用于分发视频资源的 UI 控件越写越多,也越来越复杂,并且同时相似相近的代码也非常多。

发布于:5月以前  |  390次阅读  |  详细内容 »

iOS中的内嵌汇编

写一篇在iOS上使用汇编的文章的想法在脑袋里面停留了很久了,但是迟迟没有动手。虽然早前在做启动耗时优化的工作中,也做过通过拦截objc_msgSend并插入汇编指令来统计方法调用耗时的工作,但也只仅此而已。刚好最近的时间项目在做安全加固,需要写更多的汇编来提高安全性(文章内汇编使用指令集为ARM64),也就有了本文

发布于:5月以前  |  417次阅读  |  详细内容 »

77.9K 的 Axios 项目有哪些值得借鉴的地方

Axios 是一个基于 Promise 的 HTTP 客户端,同时支持浏览器和 Node.js 环境。它是一个优秀的 HTTP 客户端,被广泛地应用在大量的 Web 项目中。

发布于:5月以前  |  383次阅读  |  详细内容 »

不会吧,这也行?iOS后台锁屏监听摇一摇

一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但是iOS就无法实现!今天要介绍的需求也有这种感觉,就是“当 APP 处于后台或锁屏状态时,依旧可以监听到摇一摇,进而触发某些功能,比如:语音播报”。

发布于:6月以前  |  529次阅读  |  详细内容 »

iOS 稳定性:App 被终止的原因

本次 session 主要内容如下: 介绍了后台应用终止的常见原因,并提供了一些优化建议 介绍了 MetricsKit 提供的在代码中获取诊断和性能数据的方法 介绍了 Xcode Metrics Ogranizer 提供的关于线上用户性能数据的可视化报告

发布于:6月以前  |  795次阅读  |  详细内容 »

优酷iOS插件化页面架构方法

随着业务不停地迭代,优酷 APP 用于分发视频资源的 UI 控件越写越多,也越来越复杂,并且同时相似相近的代码也非常多。

发布于:6月以前  |  523次阅读  |  详细内容 »

最多阅读

快速配置 Sign In with Apple 1年以前  |  4157次阅读
使用 GPUImage 实现一个简单相机 1年以前  |  2848次阅读
APP适配iOS11 2年以前  |  2759次阅读
开篇 关于iOS越狱开发 2年以前  |  2733次阅读
在越狱的iPhone设置上使用lldb调试 2年以前  |  2653次阅读
给数组NSMutableArray排序 2年以前  |  2636次阅读
App Store 审核指南[2017年最新版本] 2年以前  |  2585次阅读
所有iPhone设备尺寸汇总 2年以前  |  2509次阅读
UITableViewCell高亮效果实现 2年以前  |  2455次阅读
使用ssh访问越狱iPhone的两种方式 2年以前  |  2389次阅读
关于Xcode不能打印崩溃日志 2年以前  |  2276次阅读
使用ssh 访问越狱iPhone的两种方式 2年以前  |  2175次阅读
为对象添加一个释放时触发的block 2年以前  |  1938次阅读
UIDevice的简单使用 2年以前  |  1937次阅读
使用最高权限操作iPhone手机 2年以前  |  1918次阅读