老司机 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
Uh oh!
There was an error while loading. Please reload this page.
-
老司机 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