老司机 iOS 周报 #229 | 2023-01-09 #3801
ChengzhiHuang
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
周报编辑组又来新人啦~欢迎慕牧(zoeGuo)加入周报组织。慕牧从事 iOS 开发多年,目前在做音视频、直播相关业务场景的开发,除了音视频相关的知识外,对 App 卡顿、稳定性也比较感兴趣。希望慕牧的加入也能为大家带来更多元化的内容输出!
新闻
AppCode 2022.3 发布以及停止销售和支持
@红纸:AppCode 是一款由 JetBrains 推出了 iOS 和 macOS 应用开发 IDE。由于没有达到官方希望的市场份额,官方近日宣布,在 AppCode v2022.3 发布后,将停用该产品。在 2023 年 12 月 31 日之前,官方将继续提供专门解决 Xcode 14 兼容性问题的技术支持和版本更新,以及必要的关键安全更新,更新的范围将仅限于这两个领域。
Flutter 深度用户,字节跳动如何落地实践?
2023 年 1 月 14 日下午 2 点,字节跳动技术沙龙将作《深度解析 Flutter 技术探索与实践》主题分享,带来包括新一代渲染引擎 Impeller、Android 系统渲染线程 GLFunctor 的应用以及 HappinessX 开发套件强大功能等多个分享。此外,阿里集团 aliflutter 组织 Hummer 引擎技术专家也将作为特邀嘉宾带来精彩分享。对 Flutter 感兴趣的同学切勿错过!
文章
🌟 🐕 合集:SwiftUI 与 Core Data
@JonyFang: 合集共分4篇,依次介绍 SwiftUI 与 Core Data 的问题、数据定义、数据获取及安全地响应数据。
🐢 Using C++ from Swift
@AidenRao:目前要在 Swift 中使用 C++ API,必须封装在 C 或 Objecive-C 桥接层中。这些桥接层通常是错误、性能问题和表达能力限制的根源,允许 Swift 直接使用 C++ API 将可以删除这些桥接层。
本文档阐述了 C++ 和 Swift 互操作性的开发愿景草图,它设定了推动项目设计决策的总体目标,概述了一些与 C++ 互操作性相关的高级主题,最后研究了一组特定的 API 模式,并为编译器导入它们提出了可能的方法。
🐎 Prototyping SwiftUI interfaces with OpenAI's ChatGPT
@Cooper Chen:本文介绍了最近很火的 ChatGPT 可以根据给定的提示生成对应的可使用的 SwiftUI 代码。例如在文章中,用户要求 ChatGPT 创建一个显示所有心形表情的列表和表情的名称的 SwiftUI 应用程序,ChatGPT 能够快速地生成其实现代码。通过 ChatGPT 生成可用的 SwiftUI 代码,可以进行快速原型化或为复杂的界面生成代码,对于开发人员来说是一个比较有用的工具。
🐎 一种大幅提升iOS In-App Purchases 内购测试效率的方法
@Smallfly:大部分 App 都包含内购项,iPhone App 虚拟支付,只允许走 In-App Purchase。苹果推荐使用 TestFlight 包进行内购测试,然而生成该内购包流程需要经过构建上传机审等等,测试成本非常高。本文推荐了一种企业包重签名的方式,将生成内购测试包控制在 30s 内,大幅度提高内购测试效率。
🐕 一文读懂 Xcode 代码索引原理
@J_Knight_:本文介绍了 Xcode 代码索引的工作原理:SourceKit 与 Xcode 通过 XPC 通信生成 Index Store;同时也解析了 Index Store 的构成(包括 DataStore 和 UniDB)。然后分享了一种跨设备共享代码索引的方案,在企微落地后优化了90%的全量索引耗时。
🐕 Announcing Lottie 4.0 for iOS. A new rendering engine with significant… | by Cal Stephens | The Airbnb Tech Blog | Dec, 2022 | Medium
@Barney : 本文主要介绍了 Lottie 4.0 for iOS 那些令人振奋的改变!
简单总结如下:
1、使用 Core Animation 使性能进一步提升,不再因主线程繁忙而丢帧。
2、支持 dotLottie 动画文件 ,其大小比标准 JSON 文件小得多。
3、新的动画解码实现,比之前基于 Codable 的实现快约 2 倍。
🐢 How to manage your Flutter monorepos
@CrazyCoderShi:源码管理在大型项目上历来都是一个老大难,近年来比较流行的一个解决方案便是
Monorepos
。本文即是阐述如何在 Flutter 项目上实施Monorepos
,手把手级别的教程,并且对该方案做了优劣对比,有相关难题亟待解决的同学可以参考学习一下。🐕 Faster Apple Builds with the lld Linker
@含笑饮砒霜:链接是增量构建的主要瓶颈之一,每年有成千上万的开发人员时间花在等待调试构建链接上,因此链接器优化是一个重要主题。这篇博文将讨论 Apple 平台链接器优化的过去、现在和未来。其中 lld 是更快链接 iOS、macOS 等调试二进制文件的绝佳选择,它的完成时间是 ld64 的 50-80%,不过虽然谷歌将它用于生产构建,但作者认为 lld 目前并不适用于发布版本,lld 缺失 ld64 的某些功能,例如 ld64 的链式修复尚未针对 lld 进行充分测试,不过很明确的是链接速度现在正在获得应有的关注。
🐕 头条稳定性治理:ARC 环境中对 Objective-C 对象赋值的 Crash 隐患
@xuyafei86:ARC 环境下在多线程中执行赋值代码可能会产生野指针,导致 EXC_BAD_ACCESS 崩溃。这种崩溃发生的概率很低,在开发和灰度阶段即使执行到相应代码也很难崩溃,因此容易遗漏到正式环境。在上亿级用户的 App 往往会成为 Top 问题,对指标造成影响,并且很难排查。
今日头条在治理 Crash 的过程中彻底解决了数十个此类崩溃,发现其具有一定共性。本文详细分析崩溃发生的过程,以及总结了容易出现问题的场景,希望在大家遇到此类问题时能提供一些思路。
🐕 Static vs Dynamic Frameworks on iOS — a discussion with ChatGPT
@老驴:这段时间 ChatGPT 挺火,很多人开始思考 AI 是不是真的已经到了可以替代人类完成一些技术类型的编码工作了。这篇文章用 ChatGPT 作为引子,给读者介绍了 iOS 开发中静态库和动态库从工作原理到性能影响的区别,介绍的非常深入,值得一度。不过最后,从 ChatGPT 的不完善的回答中,还是能看出现阶段 AI 还是有其一定局限性,还不能完全替代人类在编程上的作用。
🐕 Swift 正则速查手册
@zoeGuo:Swift 5.7 中引入了正则表达式的语法支持,笔者在文章开头提出:“构建一个正则表达式的方式,分为传统的正则字面量构建,以及通过 Regex Builder DSL 的更加易读的方式。后者可以内嵌使用前者,以及其他一些已有的 parser,在可读性和功能上要强力很多。”文中就常见字面量、Builder DSL、常用 Parser、匹配方式进行了示例和解释;文末还对 Swift Regex 优缺点进行了总结。对 Swift 正则表达式的使用有疑惑的读者也许可以从文中寻找到答案。
音视频
🐢 2022 LLVM Dev Mtg: Implementing Language Support for ABI-Stable Software Evolution in Swift and LLVM
@kemchenj:今年的 LLVM 大会苹果工程师 Doug 分享了 Swift 实现 ABI Stability 的过程和细节,整个演讲思路清晰,层层深入讲得非常简单易懂,让我感受到了高级开发工程师的深厚功力,其中让我印象最深的是关于 Resilience Domain 这个抽象的引入。
实现 ABI 稳定需要付出一些额外的性能成本,因为不同版本的库,对于同一个结构体可能有不同的实现,例如新版本增加了字段,导致内存布局产生了变化,此时为了抹平这些实现的 ABI 差异,就需要引入额外中间层,一般来说这种性能消耗不会太大。
但对于 iOS/macOS 来说,引入了 Swift 的所有 SDK 都需要保持 ABI 稳定,大量的 SDK 互相调用时中间层带来的性能消耗就变得非常大。仔细想想其实它们之间互相调用时并不需要中间层进行转发,因为它们是一起编译出来的,它们的 ABI 对于同一版本的其它 SDK 来说是确定的。
Swift 将这样的一个“作用域”抽象为 Resilience Domain,处于同一个 domain 里的库互相调用的代码不会经过中间层的转发,指定好 Domain 之后 Swift 编译器就会自动为你处理好这一切,在保证 ABI 稳定的同时又尽可能地减少性能消耗,真的是非常棒的一个设计!
摸鱼周报
@摸鱼周报 #80:摸鱼周报第 80 期来了,一起来看下本期概要:
内推
重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考
具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)
关注我们
我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
说明
🚧 表示需某工具,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
This discussion was created from the release 老司机 iOS 周报 #229 | 2023-01-09.
Beta Was this translation helpful? Give feedback.
All reactions