首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Swift
订阅
ac
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
iOS 避免单例滥用
我们似乎以前已经达成了共识,“单例模式很好用,但不能滥用”。但是在Apple和第三方Swift框架中开发人员还在大量的使用它。 今天我们看一下单例使用的确切问题,并探索如何避免滥用。 我认为有两个原因。首先最主要原因是Apple内部都在经常使用它,大家就会把苹果的做法当成“最佳…
Swift中依赖注入的解耦策略
今天我们将深入研究Swift中的依赖注入,这是软件开发中最重要的技术之一,也是许多编程语言中使用频繁的概念。 具体来说,我们将探索可以使用的策略/模式,包括Swift中的Service Locator模式。 依赖注入背后的意图是通过让一个对象提供另一个对象的依赖关系来解耦。它用…
Swift:面向协议的网络请求
在上述面向对象的实现中打开方法似乎只局限于Light这个类和他的派生类。如果我们想描述打开这个操作并且不单单局限于Light这个类和他的派生类,(毕竟柜子、桌子等其他物体也是可以打开的)抽象打开这个操作,那么protocol就可以派上用场了。 我们可以把这三个步骤进行抽象,用三…
[译]如何将初始化代码从 AppDelegate 中移除
我为Word Counter开发了一个简单的框架,用来在启动时管理和初始组件的引导代码。通过使用这种方法,优化掉了 AppDelegate 中 60 行初始化代码。 组件对它自己进行初始化。 已经初始化过的组件为一个队列,当有新的组件初始化成功,它会被放进这个队列中。 通过这种…
Swift Unsafe Part - 「危险的 Swift 」指北
此篇文章背景源自一次偶现高频次崩溃问题排查。底层长连接通信采用 Rust 编写,涉及与业务层的桥接:Rust <-> C <-> Swift,虽说 Rust 与 Swift 都以安全著称,但不管是 Rust FFI 到 C 还是 Swift 与 C 的交互,代码中都不得不触及u…
VSCode使用LSP进行Swift开发
LSP的全称是Language Server Protocol,是微软推出的一项标准化协议,旨在用来统一开发工具与Language Server之前的通信。它支持语言的自动补全、定义跳转、查看定义、查看引用、lint、语法高亮等等,但具体实现要看各种语言的LS支持是否完善。在这…
Swift 类型擦除
你也许曾听过类型擦除,甚至也使用过标准库提供的类型擦除类型如 AnySequence。但到底什么是类型擦除? 如何自定义类型擦除? 在这篇文章中,我将讨论如何使用类型擦除以及如何自定义。在此感谢 Lorenzo Boaro 提出这个主题。 有时你想对外部调用者隐藏某个类的具体类…
iOS 原生级别后台下载详解
当然,这个问题其实很简单,解决方案也有很多。但我第一时间想到的是,目前是否存一个具有任务组概念,非常权威,非常流行、稳定可靠,并且是用 Swift 写的,Github 上 star 非常多的下载框架?如果存在这样的轮子,我就打算把它作为项目里专用的下载模块。很可惜,下载框架很多…
【基本功】深入剖析Swift性能优化
2014年,苹果公司在WWDC上发布Swift这一新的编程语言。经过几年的发展,Swift已经成为iOS开发语言的“中流砥柱”,Swift提供了非常灵活的高级别特性,例如协议、闭包、泛型等,并且Swift还进一步开发了强大的SIL(Swift Intermediate Lang…
Swift 包管理器介绍
Swift Package Manager 是一个苹果官方出的管理源代码分发的工具,目的是更简单的使用别人共享的代码。它会直接处理包之间的依赖管理、版本控制、编译和链接。从总体功能上来说,和 iOS 平台上的 Cocoapods、Carthage 一样。 一开始 SwiftPM…