你也可认为这个项目出一份力,如果发现有价值的信息、文章、东西等可以到 Issues 里提给咱们,咱们会尽快处理。记住写上引荐的理由哦。有建议和定见也欢迎到 Issues 提出。
新闻
Swift project in 2023
Swift 团队发布下一年的开发路线图,今年新增了工作组机制:
- 言语组:负责编译器和规范库的开发
- 网站组:管理 swift.org 的网站内容
- 文档组:负责文档东西的开发
- C++ 交互组:进步与 C++ 的可交互性,孵化相关提案
这里节选了一些亮点内容:
- 宏系统开始进行规划和完成,最快或许下一年 WWDC 就能看到
- 增加语法层面的功能让咱们可以操控值的一切权,削减不必要的拷贝和引证计数
- 优化编译系统和编译器的交互逻辑,让编译过程变得可靠
- 编译器一部分运用 Swift 进行重写
文章
云音乐 iOS 端代码静态检测实践
@水水: 跟着项目的扩大,依托纯人工 Code Review 来保障代码质量、防止代码劣化变得”无能为力“。此时有必要借助代码静态剖析才能,提高项目可继续发展所需要的自动化水平。针对 C、Objective-C 主流的静态剖析开源项目包括:Clang Static Analyzer、Infer、OCLint 等。 本文根据可定制性最强的 OCLint 作为代码静态检测东西,从以下四点介绍了 OCLint 的实践运用过程:
- OCLint 环境部署、编译和剖析。
- 自定义规则完成。
- 静态检测耗时优化。
- 运用静态检测才能继续对发动性能防劣化操控。
三代终端容器 KUN 的初次大考【架构演进】
咸鱼自研的 KUN 容器结构,是一套用前端编写代码,用 Flutter 来做烘托,目前已经在闲鱼号上运用。本文一起对 KUN 结构、Weex、WebView 烘托做了对比,KUN 结构在体会、性能等方面均体现不错,一起,KUN 结构对双端烘托共同性问题也做了一定的优化,防止代码中很多 if-else 判别。
HOME ARTICLES BOOK ABOUT When .animation animates more (or less) than it’ s supposed to
@含笑饮砒霜:SwiftUI 中 animation 修饰符,在 iOS 16/macOS 13 中,其相关于非烘托修饰符的放置与决议是否对更改进行动画处理无关。作者在文中列举了自己测试的一切案例对此进行了阐明。
React 中的重新烘托
@Damien:本文来自阿里巴巴终端技能团队文章,在客户端动态化计划中,React Native 是一个老练且高效的解决计划,作为动态计划重中之重就是烘托,想知道 React 的重烘托为何如此高效吗?无妨来深入了解下本篇文章内容,本文会深入源码,为咱们一步步揭穿面纱。
Binary Targets in Swift Package Manager
@Smallfly:Swift Package Manager(SPM) 是苹果官方的 Swift 源代码管理东西,它负责自动化完成依靠库的下载、编译和链接。以源码的方法集成依靠库,会对集成和编译效率有较大的影响。
Binary Target 让 SPM 支持以二进制产品的方法集成依靠库,能有用节约集成时刻,一起也适用于分发闭源库。不足之处是二进制格式不支持调试,而且只支持 XCFramework。
本文详细的介绍了 Binary Target 的优缺点,以及运用方法,最终还介绍了如何构建 XCFramework,以支持 Binary Target。
Combining opaque return types with primary associated types
@zoeGuo:Swift5.7 引入了 Primary associated types 的概念,即可以在协议中运用 associatedtype 声明自定义类型。运用 some 声明包含 Primary associated types 的协议的返回值后,调用者可以不再需要运用强制类型转换和手动类型擦除,并且可以确保彻底的类型安全。文章就运用 associatedtype 的优点,以及 associatedtype 结合 some、any 关键字的运用进行示例和介绍。
Flutter 多引擎烘托,在稿定 App 的实践
@老峰:一直以来 Flutter 社区关于 multiple-flutters Flutter 多引擎实践的参阅的材料比较少,本文作者介绍了运用脚本开发了一套 FGUIComponentAPI 东西链来链接 Native 与 Flutter UI,自动生成开发基类、宿主调用类、通信层 API、测试用例、开发文档的实践思路,以及在多引擎实践中踩到的坑。
Stack unwinding
@xuyafei86:在 C++ 中抛出反常时,当前函数将暂停履行,经过函数调用栈查找匹配的 catch 子句。如果反常没有在抛出它的函数中被处理,就会退出当前函数,从函数调用栈中删除函数实体并开释栈上的局部变量,继续到调用栈上层查找,直到找到可以处理该反常的 catch,这个过程称为栈打开(stack unwinding)。其主要用于调试器、崩溃陈述、废物收回器中。本文将带咱们简单了解 Stack unwinding 的完成,感兴趣的同学可以阅览原文了解。
代码
GitHub – ole/swiftui-layout-inspector: A tool for learning how the SwiftUI layout system works, and for debugging your own layout code.
@Barney:关于学习 SwiftUI 布局的朋友们是一个福音,这款东西可以很好地协助 debug 布局代码,便利咱们学习了解 SwiftUI 布局。
A Swift library (and iOS/Mac app) for learning how the SwiftUI layout system works, and for debugging your own layout code. Inspect the layout behavior of SwiftUI views, i.e. what sizes views propose to their children and how a view determines its own size.
音视频
Standardizing build system using modern Swift Packages in LINE
@kemchenj:来自 LINE 的工程师介绍了他们运用 SPM 改造构建系统的过程。跟着 LINE iOS 端的迭代,代码行数现在已经增加到了两百万以上,编译速度也就渐渐成为了一个“问题”。
他们自然而然也挑选业界流行的计划 Bazel 来解决这个问题,整个构建过程分为两步:
- 一切依靠库都运用 Bazel 进行打包成二进制库
- 主工程 App 引证上一步的库,运用 Xcode 进行编译和调试
但运用 Bazel 的一起也带来了一些问题,学习本钱高,维护本钱高,缺少依靠管理。支付如此高的价值,但实际带来的编译速度提高还不如 Apple Silicon(M1) 的晋级。
最终他们将眼光投向了 SPM,打算直接运用它来代替 Bazel 打包二进制库,一起也为此开发了一个东西 Scipio,用于将 Swift Package 打包为 XCFramework,并且自定义了一套缓存策略。
摸鱼周报
@摸鱼周报 #75:第 75 期摸鱼周报来了,一起来看下本期概要吧:
- 本期话题:长途工作在国内的推行为什么困难重重?iPhone 14 / Pro 系列卫星 SOS 紧迫求救服务已在美国和加拿大正式推出
- 本周学习:iOS16 中的 3 种新字体宽度样式
- 内容引荐:Ask Apple 2022 十月问答汇总;Swift 以及 SwiftUI 相关的好文引荐
- 摸一下鱼:一个快速学习编程言语或开发东西的网站 Learn X in Y minutes、B 站 up 主开源的一套免费商用的字体得意黑、一个 SwiftUI 开发的开源单词游戏项目、Google 推出的可以模仿面试的网站
内推
重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供咱们参阅
详细信息请移步:www.yuque.com/iosalliance… 进行查看(如有招聘需求请联系 iTDriverr)
重视咱们
咱们是「老司机技能周报」,一个继续寻求精品 iOS 内容的技能大众号,欢迎重视。
重视有礼,重视【老司机技能周报】,回复「2021」,领取 2017/2018/2019/2020 内参
一起也支持了 RSS 订阅:github.com/SwiftOldDri… 。
阐明
表示需某东西, 表示修改引荐
估计阅览时刻: 很快就能读完(1 – 10 mins); 中等 (10 – 20 mins); 慢(20+ mins)