话题编程语言 › Swift

编程语言:Swift

字节跳动DanceCC工具链系列之Swift调试性能的优化方案

DanceCC (Dance Compiler Collection) 是字节跳动的终端技术团队(Client Infrastructure) 下的编译工具链品牌,编译工具链团队成员由国内和硅谷两地的编译器专家及构建系统专家组成,提供基于开源的 LLVM/Swift 项目深度定制的clang/swift编译器、链接器、lldb 调试器和语言基础库等工具及优化方案,覆盖构建性能优化及应用性能稳定性优化等场景,本系列将会围绕这些场景中的优化案例,介绍编译工具链技术在字节的优化方案和落地情况。

Swift 中的 JSON 反序列化

本文会大致介绍一下 Swift 中的 JSON 反序列化常用方案和各自的优缺点,以及云音乐目前正在使用的方案。

Swift后缀表达式(逆波兰式)转换计算

最近在开发《挑战24点》的过程中遇到了一个问题,即,如何计算常用数学表达式的结果,比如,给定字符串8 - (6 + 4 / 2 - 1) * 2,怎么计算得到结果,并且得到计算的过程。

网上查资料发现,大部分都是类似系统计算器的处理,在遇到第二个运算符时,就把前一步的操作结果计算出来。这样的处理方式并不适用 于笔者想要解决的问题。

进一步搜索后发现,前缀表达式、中缀表达式、后缀表达式的概念,给定的字符串8 - (6 + 4 / 2 - 1) * 2属于中缀表达式,而想要计算机得出结果,可以转为前缀表达式或者后缀表达式,然后再对转换后的表达式进行计算。

这里采用中缀表达式转后缀表达式,然后计算后缀表达式得出结果

Swift 首次调试断点慢的问题解法

Swift 调试断点是与开发体验关系最为密切点之一,优酷 iOS 团队整理了解决方案并分享,希望能帮助到大家。

Swift协议与关联类型

本文将讨论Swift协议(Protocol)中特殊的关联类型(Associated Types),它与泛型(Generic)有相似性和又有区别。

两个swift 开发小技巧

类型系统和类型检测在应用开发中起到了较好的作用,它能够帮助我们编译期发现可能的错误。union type是一个很有用的类型定义模式 ,基本思想是允许单个类型表示一组不同的不同类型的值。

我们经常使用的用例之一是各种对象的集合进行迭代,union type允许我们避免复杂的合并和排序逻辑,并在跌代体中使用简单的条件逻辑。

58同城Swift版小游戏研发之路

混天项目:58集团共建的Swift基础设施平台建设, 主要目的是推进集团App对Swift语言进行使用,并打造复杂工程下Swift-OC混编、编译耗时优化、包大小检测(支持Swift)等基础能力的建设。

小游戏Native化背景:梦想小镇在同城10.7.0版本前, 是由H5技术研发,优点是可以跨平台,完美支持iOS以及Andriod系统。但是,小游戏的核心业务模式是通过用户合成升级, 当达到一定等级后,给予用户现金奖励(在同城中是发放神器矿石)。但在10.9.0版本苹果审核人员明确表明此业务模式触发了4.7.7审核条款, 如果继续使用H5的技术手段,只能去掉奖励。但是如果去掉奖励的话, 也基本失去了用户玩小游戏的动力,对App的日活以及业务导流都会有比较大的影响。

基于上述同城对混编语言建设的现状, 以及苹果对H5游戏审核政策的变化,使我们坚定了用Swift语言开发游戏的新思路。

Swift子数组提取性能优化分析

在写本文时,本人成功替某一个知名在线答题平台的后台优化一个Swift代码模块的运行效率,并使之上线后运行效率提升了数十倍。经过这次经历,本人决定将优化的经验进行一一分享,优化包括了字符串解析、数组操作、指针操作等。

Swift 在手淘商品评价的技术重构与实践

本文阐述了 Swift 是如何提升研发效率/质量、现有项目/模块是否需要使用 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/仓库二进制化任务中依旧使用源码,出现问题需要手动重试,影响效率且繁琐,故深入编译器寻求解决方案。

首页 - Wiki
Copyright © 2011-2023 iteam. Current version is 2.115.2. UTC+08:00, 2023-06-02 19:38
浙ICP备14020137号-1 $访客地图$