老司机 iOS 周报 #239 | 2023-04-03 #3933
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 提出。
新闻
Xcode 14.3 正式版发布
Xcode 14.3 的正式版来了,除了大家关心的 iOS 16.4 与 Swift 5.8,部分开发者可能在使用 new 创建对象时遇到
new is unavailable
的报错。遇到的话需要检查下对应对象的默认 init 方法是否被标注为了 NS_UNAVAILABLE ,如果是的话进行修改即可(之前版本不会强制报错)。因为 new 本身就等价于 alloc + init ,在 init 被禁用的前提下让 new 也在编译阶段报错能够更好地暴露问题。新手推荐
🐎 Xcode Tip: filter to show modified files only
@Smallfly:在大型 Xcode 工程中,定位已修改文件的效率会降低。这篇文章介绍了使用过滤器来查找最近修改过的文件,并提供了一些快捷键和技巧来更好的使用 Xcode,开发人员能够更加轻松地管理最近修改的代码文件,提高代码开发和维护效率。
文章
🐢 Custom Actor Executors
@JonyFang:Actor Executors 是 Swift 中用于处理 actor 模型的并发机制。传统的模型在处理大量并发请求时可能会遇到一些问题。Swift 引入了自定义 actor executors,允许开发人员创建自己的 actor executors 对象,更好地管理并发操作。开发人员可以创建多个 actor executors 对象,并将它们分配给不同的线程或协程。此外,自定义 actor executors 还可以动态地创建或销毁 actor executors 对象,以适应应用程序的需求。
Working with percentages in SwiftUI layout
@极速男孩:本文介绍了如何在 SwiftUI 布局中使用百分比来控制子视图的大小。SwiftUI 的布局中通常不提供相对大小选项,例如“使此视图占其容器宽度的 50 %”。因此,我们可以在 Layout 协议之上构建自己的相对大小调整器。本文提供了一个名为 RelativeSizeLayout 的私有结构体,用于实现这一目的。同时,在 View 扩展中,我们添加了一个名为 relativeProposed 的公共 API,用于使用刚刚编写的布局。最后,文中还提供了实际使用的示例,展示了如何使用 relativeProposed 来控制聊天泡泡的大小,并说明了在使用相对大小时可能会遇到的一些问题。
🐎 写给小白的 Midjourney 教程
@Cooper Chen:随着 AI 技术的持续大火,越来越多的机遇 AI 技术的产品或工具相继推出,而 Midjourney 应该是最近最火的 AI Image generator 了,作为一款可以用户通过文字描述,就可以绘制出图像的 AI 的应用,其生成的图像质量之高,令人叹为观止。然而由于 Midjourney 使用起来还有有一些门槛,所以本文写给完全没有任何编程基础的用户,你可以把本文当做一本 Midjourney 操作指南来使用。
🐎 How the relative size modifier interacts with stack views
@zoeGuo:这是一篇适合 SwiftUI 初学者的文章。笔者在 HStacks 中使用 .relativeProposed 和 .layoutPriority 对比几种情况下的视图的尺寸,分析出 HStacks 和 VStacks 在使用相对大小时视图尺寸计算的规则,得出结论:HStacks 和 VStacks 并没有将相对大小的修饰先整体计算出一组约束,而是根据子视图优先级的顺序,挨个计算子视图符合的尺寸,排在最后的视图的尺寸表现取决于最后剩余的空间大小。
🐎 一个用在 Swift 中的模块管理框架
@kemchenj:在 OC 里,我们一般是可以通过
__attribute((used, section("__DATA,"#sectname" ")))
这种编译器提供的修饰符来将模块信息存到 Mach-O 的 section 去,等到运行时,在+load
或其他时机取出进行注册,这种类似于自动注册的方式自然是很方便。但是在 Swift 中,上面这种方式自然是不行的,本文作者封装了一套 Module Manager,通过扫描 Mach-O 中的
__objc_classlist
节拿到所有的 class,继而过滤出符合模块要求的 class 进行后续操作。另外 Swift 官方在几个月前也提出过一个草案提供自定义注解 API,让我们可以通过类型安全的方式提供元数据,并且可以在运行时进行读取和操作,感兴趣的同学也可以查看。
🐎 Flutter 小技巧之霓虹灯文本的「故障」效果的实现
@Crazy:这是一篇优秀的 Flutter 实践文章,介绍了如何制作霓虹灯特效。文章简短明了,首先讲解了如何使用 TextStyle 中的 Shadow 的 blurRadius 属性来制作发光文字特效,接着引出了利用 BackdropFilter 的 ImageFilter 制作发光图片的方法。之后,作者利用 ClipPath 和 Polygon 实现了文字撕裂效果,并提供了完整的效果对比。最后,作者通过变形闪动的技巧增强了撕裂效果的真实感。整体的代码实现简单易懂,没有任何难点。文章虽然简短,但在效果上表现出色,适合需要制作霓虹灯文本效果的同学参考。
降低网络延迟:让你的 App 变得更快
@dustturtle:如何打造更快的 App ,对于开发者来说是一个永恒的课题;原因无他,因为对于一个以网络交互为核心的现代应用来说,这是用户体验的核心所在:它意味着更流畅的音视频播放、低延迟的网络会议、快速加载的页面和资源、更少的游戏等待时间等等。2021 年,苹果通过 Session 10239: Reduce network delays for your app[2] 给大家分享了许多网络延迟优化相关的理论知识,并提出了 RPM (每分钟往返次数) 的概念和基于此概念的测试工具;而今年,苹果在去年的基础上,又为我们带来了这一篇实战性质颇强的分享,从客户端侧、服务端侧、网络协议侧三个方面入手提供一系列行之有效的建议,帮助开发者们更好的分析和改善应用的网络延迟状况,从而打造响应更加快捷的 App ,带来更好的用户体验。
内推
重新开始更新「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 周报 #239 | 2023-04-03.
Beta Was this translation helpful? Give feedback.
All reactions