话题编程语言 › Swift

编程语言:Swift

Swift在58安居客房产实践

58集团与2020年底启动了Swift共建项目,内部称为混天项目。目标是搭建Swift的基础组件、辅助工具及基础设施。制定集团Swift开发规范和代码检测工具以及Swift在各个业务线中的落地。

房产业务作为集团核心产业,深度参与了混天项目的研发及Swift的落地。下面的内容主要是Swift在房产业务线从0到1落地的过程中遇到的一些问题和探索。

目前公司项目都是OC语言开发的,在这样的一个快速迭代历史悠久的项目中,短期内是不可能将所有项目用Swift重写,所以我们前期采用的都是Swift和OC的混合开发。

错误处理原则及其在Swift中的应用

错误处理是程序员最重要也是最容易忽视的话题之一

Swift代码优化指南 | 如何最大化实现性能提升?

本文总结了 Swift 优化方案,从内存占用、编译期、运行时速度提升等角度,结合底层原理进行分析总结。

SDK在58集团App体系下Swift混编改造实践

目前58的iOS团队维护了包含58同城、58同镇、赶集网、招才猫、安居客、新英才、车商通等在内的十几款App,为了降低维护成本,团队将一些基础功能进行了组件化改造,提供了大概20个通用的自研基础组件。不同的App对基础组件的使用情况各不相同,同时为了解决部分垂直业务在跨App维护时多App底层差异的问题,团队在基础组件的基础上又增加了中间件层,使依赖关系的复杂度进一步增加。上层逻辑的Swift改造需要底层基础库的支持,加上全面推进Swift的改造,将涉及大量的业务改造,各层模块之间的协同也是不小的挑战。

如何在Swift中实现状态机?

很多人每天上班都要刷卡进出地铁,我们就以有旋转栅门的地铁站闸机入口作为例子。

这个闸机口在开始的时候有一个“locked”的状态, 在这个状态下它并不会让乘客旋转栅栏通过进站口。当有人刷卡了,那么这个闸机口的状态就会变为“unlocked”,但是它并不会自己转动,必须得等到有人推动旋转栅栏通过闸机口,且在这之后闸机口的状态会再次变为“locked”。

关于 Swift Package Manager 的一些经验分享

Swift Package Manager 是 Apple 为了弥补当前 iOS 开发中缺少官方组件库管理工具的产物。相较于其他组件管理控件,他的定义文件更加轻松易懂,使用起来也很 Magic,只需将源码放入对应的文件夹内,Xcode 就会自动生成工程文件,并生成编译目标产物所需要的相关配置。同时,SPM 与 Cocoapods 相互兼容,可以在特性上提供互补。

Swift编译器Crash—Segmentation fault解决方案

抖音上线 Swift 后,编译时偶现Segmentation fault: 11和Illegal instruction: 4的错误,CI/CD 和本地均有出现,且重新编译后均可恢复正常。

由于属于编译器层抛出的 Crash,加之提示的错误代码不固定且非必现,一时较为棘手。网上类似错误较多,但Segmentation fault属于访问了错误内存的通用报错,参考意义较小。和公司内外的团队交流过,也有遇到类似错误,但原因各不相同,难以借鉴。

虽然 Swift 库二进制化后,相关代码不会参与编译,本地出现的概率大大减少,但在 CI/CD/仓库二进制化任务中依旧使用源码,出现问题需要手动重试,影响效率且繁琐,故深入编译器寻求解决方案。

利用Swift API可用性解决App Extension无法编译

从Xcode12.5开始,苹果要求所有的Extension Target必须设置APPLICATION_EXTENSION_API_ONLY为true,否则将会导致编译错误“Application extensions and any libraries they link to must be built with the APPLICATION_EXTENSION_API_ONLY build setting set to YES”;但是我们通常会在主工程和Extension之间使用Framework或其他方式共享代码,这些代码中使用了非extension-only API,所以导致问题出现,本篇文章将探讨如何解决这个问题。

京东APP订单业务Swift优化总结

结合Swift和ObjC的异同点,我们从Swift优势出发,重新审视和优化了项目的功能代码。

Swift Hook新思路--虚函数表

业界对Swift的Hook大多都需要依靠OC的消息转发特性来实现,本文从修改Swift的虚函数表的角度,介绍了一种新的Hook思路。并以此为主线,重点介绍Swift的详细结构以及应用。

Swift的一次函数式之旅

每一年的WWDC其实Swift都更新了很多的内容,Swift本身也一直在增加新的特性,一直在稳健的迭代着,如果我们还是使用Objective-C的思维去写Swift的话,其实本身是落后于语言发展的。

蘑菇街ObjC&Swift混编实践

纯ObjC开发项目想要用 Swift 重写不切实际,引入 Swift 的第一想法就是在原工程中实现两者共存,混合编译开发。

一文看破Swift枚举本质

随着Swift5.0版本release之后,abi也变得逐渐稳定起来,加上Swift语法简洁、安全、语法糖丰富等特性,更多的开发者开始拥抱、学习Swift。真正的精通一门语言,知其然也要知其所以然掌握使用,知道原理,明晰现象背后的本质。

猿辅导 iOS 精准测试实践 - Objective-C 与 Swift 混编工程精准测试探索

在当今移动互联网对于 App 版本迭代周期不断缩短的情况下传统黑/白盒测试的表现都不尽人意。有没有一种测试方案可以在不增加工作量的同时既满足不断缩短的迭代周期要求又能够准确采集并衡量测试过程呢?「精准测试」是我们找到的答案。

优酷Mac迁移Swift实践

.

[干货]开源一个人脸变老方案实现(Swift)

最近有看到一些拍照应用提供人脸变老预测的功能,体验下来趣味性不错,决定自己尝试实现一下。经过网上一番搜索,没看到有完整方案开源实现可供参考,一些相关的博客大都是简单的提及一些思路和给出一些效果图,于是在借鉴了一些前人的思路之后,自己实现了一个人脸变

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-25 13:57
浙ICP备14020137号-1 $Carte des visiteurs$