自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ficow Shen

Fly in the code world!

  • 博客(117)
  • 收藏
  • 关注

转载 看图学 - Swift 并发

Swift 内置支持以结构化方式编写异步和并行代码。看着那些层层嵌套的闭包,你是不是很想把它们全都干掉?

2024-08-27 08:16:18 52

转载 看图学 - Swift actor

还在纠结用【锁】还是用【队列】来处理多线程环境下的数据访问问题?别想了,actor才是最佳选择~

2024-08-25 08:48:09 44

原创 iOS模拟器 Unable to boot the Simulator —— Ficow笔记

iOS模拟器和Xcode一样不靠谱,问题也不少。😂 那就有病治病,然后把疗法记下来~

2024-03-23 08:30:15 1395

翻译 Ficow 陪你看 WWDC 2022

去年,Ficow 陪你看 WWDC 2021。今年,同样不能缺席呢~WWDC 2022 的完整视频列表,足足有180多个视频,想全部看完还是需要耗费很多的精力。所以,Ficow 在这里为你提供一些实战建议。

2022-10-09 22:58:00 318

原创 Docker 中使用 scratch 镜像构建 Go 应用镜像,容器报错:X509: Certificate Signed by Unknown Authority

 本文首发于 Ficow Shen’s Blog,原文地址: Docker 中使用 scratch 镜像构建 Go 应用镜像,容器报错:X509: Certificate Signed by Unknown Authority。 内容概览前言将证书添加到镜像中不使用 HTTPS总结 前言 当使用 FROM scratch 构建基于 scratch 镜像的 Go 应用镜像时,如果没有向镜像中添加证书颁发机构(CA, Certificate Au

2020-11-08 21:23:02 740

原创 Combine 框架,从0到1 —— 5.Combine 常用操作符

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 5.Combine 常用操作符。 内容概览前言printbreakpointhandleEventsmapflatMaperaseToAnyPublishermergecombineLatestzipsetFailureTypeswitchToLatest总结 前言 正所谓,工欲善其事,必先利其器。在开始使用 Combine

2020-10-09 21:25:10 1730

原创 Combine 框架,从0到1 —— 5.Combine 中的 Subjects

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 5.Combine 中的 Subjects。 内容概览前言PassthroughSubjectCurrentValueSubjectSubject 作为订阅者常见用法总结 前言 正所谓,工欲善其事,必先利其器。在开始使用 Combine 进行响应式编程之前,建议您先了解 Combine 为您提供的各种发布者(Publishers)、操作符

2020-09-26 08:06:32 327

原创 Combine 框架,从0到1 —— 5.Combine 提供的发布者(Publishers)

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 5.Combine 提供的发布者(Publishers)。 内容概览前言JustFutureDeferredEmptyPublishers.SequenceFailRecordShareMulticastObservableObject@Published总结 前言 正所谓,工欲善其事,必先利其器。在开始使用 Combine

2020-09-25 07:49:13 637

原创 使用 Swift Package Manager 集成依赖库(图文教程)

 本文首发于 Ficow Shen’s Blog,原文地址: 使用 Swift Package Manager 集成依赖库。 内容概览前言添加依赖包在项目中使用依赖管理已导入的依赖在团队中统一依赖的版本总结 前言 在 Swift Package Manager 出现之前,我们需要使用 CococaPods, Carthage 等包管理工具来管理依赖。现在,我们可以直接使用 Xcode 来管理依赖。Xcode 内建了对 Git 版本控制系

2020-09-24 07:37:41 1232

原创 Github 个人首页的 README,这样玩儿~

 本文首发于 Ficow Shen’s Blog,原文地址: Github 个人首页的 README,这样玩儿~。 内容概览前言创建仓库修改 README 的内容总结 前言 大家最近有没有发现这个现象,有些名人的 Github 首页变得更丰富了?尤其是那个夺目的 README 板块!!!请看,这是 iOS 喵神 的 Github 首页:看官,你想不想自己也弄一个呢?来,现在就开始吧~ 创建仓库 首先,你需要登

2020-09-23 09:04:06 4019

原创 Combine 框架,从0到1 —— 4.在 Combine 中执行异步代码

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 4.在 Combine 中执行异步代码。 内容概览前言用 Future 取代回调闭包用输出类型(Output Types)代表 Future 的参数用 Subject 取代重复执行的闭包总结 前言 你的应用可能会使用一些常见的模式来处理异步事件,比如:完成处理器(Completion handlers)。它其实是调用方提供的一个闭包,当

2020-09-20 17:32:55 309

原创 Combine 框架,从0到1 —— 4.在 Combine 中使用 KVO

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 4.在 Combine 中使用 KVO。 内容概览前言用 KVO 监控改动将 KVO 代码迁移到 Combine总结 前言 KVO([Key-Value Observing](Using Key-Value Observing in Swift)) 是苹果开发者常用的功能,很多框架都会使用 KVO 来发送异步改动。将基于回调和闭包的 KVO 代

2020-09-17 09:04:02 254

原创 Combine 框架,从0到1 —— 4.在 Combine 中使用计时器

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 4.在 Combine 中使用计时器。 内容概览前言使用计时器执行周期性的工作将计时器转换为计时器发布者(Timer.TimerPublisher)总结 前言 计时器是苹果开发者常用的功能。如果你的应用使用 Foundation 框架中的计时器 Timer 来周期性地执行某些操作,你可以用 Combine 简化这些代码。现在,让我们来学习如

2020-09-13 07:34:06 277

原创 Combine 框架,从0到1 —— 4.在 Combine 中使用通知

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 4.在 Combine 中使用通知。 内容概览前言让通知处理代码使用 Combine总结 前言 通知中心是苹果开发者常用的功能,很多框架都会使用通知中心来向外部发送异步事件。对于iOS开发人员而言,以下代码一定非常眼熟:var notificationToken: NSObjectProtocol?override func viewDi

2020-09-08 07:47:22 324

原创 Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度。 内容概览前言在发布者生产元素时消耗它们使用自定义的订阅者施加背压(back pressure)使用背压操作符管理无限需求(Unlimited Demand)总结 前言 对于大多数响应式编程场景而言,订阅者不需要对发布过程进行过多的控制。当发布者发布元素时,订阅者只需要无条件地接收即可。但是,如

2020-08-29 16:26:12 271

原创 Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布。 内容概览前言使用 makeConnectable() 和 connect() 手动控制发布使用 autoconnect() 操作符进行自动连接总结 前言 使用 Connectable Publisher, 你可以决定发布者何时开始发送订阅元素给订阅者。那么,为什么我们需要这么

2020-08-28 21:03:40 258

原创 使用 Swift Package Manager 集成依赖库

 本文首发于 Ficow Shen’s Blog,原文地址: 使用 Swift Package Manager 集成依赖库。 内容概览前言添加依赖包在项目中使用依赖管理已导入的依赖在团队中统一依赖的版本总结 前言 在 Swift Package Manager 出现之前,我们需要使用 CococaPods, Carthage 等包管理工具来管理依赖。现在,我们可以直接使用 Xcode 来管理依赖。Xcode 内建了对 Git 版本控制系

2020-08-28 09:27:23 807

原创 Combine 框架,从0到1 —— 1.核心概念

 本文首发于 Ficow Shen’s Blog,原文地址: Combine 框架,从0到1 —— 1.核心概念。  内容概览前言核心概念RxSwiftCombine总结参考内容 前言 未来已来,只是尚未流行!响应式编程 这个名词已经久负盛名,但是在实际项目中采用了响应式编程的公司其实不多。如果您有 iOS 开发经历,那么您多半听说过 RxSwift,而 Rx 源自微软。提到Rx,往往也会提到源自微软的 MVVM模式。不过,

2020-08-27 22:01:25 923 1

转载 Swift self, Self, ==, === 傻傻分不清楚?

 本文首发于 Ficow Shen’s Blog,原文地址: Swift self, Self, ==, === 傻傻分不清楚?。 内容概览前言self 和 Self== 和 ===总结 前言 在2014年开源之后,Swift就在飞速地茁壮成长,内涵也越来越丰富。对于实际使用Swift的人来说,概念多了就比较容易混淆????,然后就会导致开发效率低下。毕竟,你需要去查这些概念的正确定义,或者你需要去写代码进行验证。self,

2020-08-12 23:06:20 1149

原创 iOS 高效灵活地配置可复用视图组件的主题

 本文首发于 Ficow Shen’s Blog,原文地址: iOS 高效灵活地配置可复用视图组件的主题。 内容概览前言如何配置主题?如何更高效地配置主题?面向协议/接口的方案  前言 在开发可视化应用的过程中,配置控件的样式是最常见的工作内容。请问读者是否遇到过这样的需求:在多个项目中复用多种可视化控件,而且这些控件可以配置颜色、字体等可视化元素?本文主要针对控件数量较大,而且需要配置的控件属性较多的这种需求对主题配置方案进行

2020-07-29 15:21:21 166

转载 构建个人博客网站(基于Python Flask)

 本文由 Ficow Shen 首发于 Ficow Shen’s Blog. 文章概览前言SketchHTML, CSS, JavaScriptPython & Flask & MySQL & SQLAlchemyGunicorn & Terminal & CommandNginx & Certbot&nb...

2020-04-11 12:44:35 1286

原创 iOS 使用响应者和响应者链处理事件

 内容概览综述确定一个事件的第一响应者(First Responder)确定哪个响应者包含一个触控事件改变响应者链在视图(UIView)中处理触控事件  综述 iOS 应用使用响应者对象接收和处理事件。一个响应者对象是 UIResponder 类的实例,常见的子类包括: UIView, UIViewController, UIAp...

2019-11-27 13:57:15 464

原创 iOS 基于 RxSwift + Moya 搭建易测试的网络请求层

 内容概览MoyaRxSwift实例讲解总结 Moya TargetType/// The protocol used to define the specifications necessary for a `MoyaProvider`.public protocol TargetType { /// The target'...

2019-11-20 17:23:54 1115

转载 macOS 为终端设置代理服务器

打开终端,直接执行命令进行配置。(执行后,只对当前终端起作用)export http_proxy=socks5://127.0.0.1:1080 # 配置 http 代理unset http_proxy # 取消 http 代理export https_proxy=socks5://127.0.0.1:1080 # 配置 https 代理unset https_proxy # 取消 ...

2019-10-11 17:57:22 2926

翻译 (WWDC)优化应用启动时间 —— 实践篇

 如何度量  优化启动时间  参考内容:[Optimizing App Startup Time](https://developer.apple.com/videos/play/wwdc2016/406/)  转载请注明出处,谢谢~...

2019-10-09 14:05:03 802

翻译 (WWDC)优化应用启动时间 —— 理论篇

 本文读者:遭遇应用启动速度慢问题的朋友希望保持应用启动速度快的朋友对操作系统知识感兴趣的朋友 内容概览理论部分Mach-O 相关知识虚拟内存相关知识Mach-O 映像加载过程实践部分如何度量优化启动时间   理论部分 Mach-O 相关知识 Mach-O 术语文件类...

2019-09-25 13:02:07 268

翻译 (WWDC) Xcode 构建过程的幕后 —— Linker

 接下来,我们将揭晓以下问题的答案:链接器(linker)实际上做了什么?什么是符号(symbols)?什么是目标文件(object files)?什么是库(libraries)?  链接器 (linker)执行构建可执行 Mach-O 文件的最后任务;把所有编译器调用的输出整合到单个文件中:移动和修补编译器生成的代码输入...

2019-09-11 12:51:36 328

原创 (WWDC) Xcode 构建过程的幕后 —— Swift

现在,让我们深入到 Swift 如何与构建系统协作查找声明代码的细节中。首先,我们需要回顾一个要点:Clang 会分开编译每一个 Objective-C 文件。如果你需要引用一个文件中的某个类,你必须导入声明了这个类的头文件。然而,Swift 不需要你导入头文件。这明显减轻了初学者的负担,也避免让你重复导入声明。不过,这就意味着编译器需要做更多的...

2019-08-28 15:22:52 189

原创 (WWDC) Xcode 构建过程的幕后 —— Clang 编译器

我们将会了解到和 Clang 相关的两个特性:如何使用头文件映射(header map)来将 Xcode 构建系统产生的信息传递到 Clang 编译器;如何使用 Clang 模块(modules)来加速构建;什么是 Clang ?苹果公司的 C 语言家族的官方编译器:CC++Objective-CObjectiv...

2019-08-05 16:34:00 503

翻译 (WWDC) UI 数据源的进步

内容概览现状新方法Demos注意事项现状UICollectionViewDataSource 简单、灵活,但这也致使应用变得复杂。使用 UICollectionViewDataSource 时,通常需要 Controller 来维护 UI 数据。更新 UI 可能会遭遇一些问题,比如:*** Terminating app due to uncaught excepti...

2019-08-02 20:28:04 244

翻译 (WWDC) Xcode 构建过程的幕后 —— 构建系统

Xcode 10 中全新的构建系统完全采用 Swift 编写而成, 提供了更好的性能和稳定性。对于 Xcode 中的构建过程,你是否有过这些疑问?当你在 Xcode 中按下快捷键 Command + B 时,构建过程如何进行组织?Xcode 如何根据项目中的文件信息来决定构建过程?接下来,让我们一起进入编译器的国度并深入探索以下内容:- Clang 和 Swift 如何将源...

2019-07-31 17:33:10 429

原创 (WWDC) Xcode 构建过程的幕后 —— 构建系统

Xcode 10 中全新的构建系统完全采用 Swift 编写而成, 提供了更好的性能和稳定性。对于 Xcode 中的构建过程,你是否有过这些疑问?当你在 Xcode 中按下快捷键 Command + B 时,构建过程如何进行组织?Xcode 如何根据项目中的文件信息来决定构建过程?接下来,让我们一起进入编译器的国度并深入探...

2019-07-24 11:44:00 208

原创 (WWDC) 良好的开发者习惯

内容概览组织版本控制注释 & 文档测试分析评估解耦依赖管理组织混乱不堪井然有序组织有序的工作空间可以大幅度提升你的工作效率!Xcode Group 和 Finder Folder 一一对应:利用 Storyboard 的 Reference 功能...

2019-07-09 17:16:00 147

原创 (WWDC) 新式的 Swift API 设计

浏览 Swift API设计规范, 我们可以知道:注重使用时的清晰度 是定义接口时最重要的目标清晰度远比简洁更重要另外,纯 Swift 编写的框架是没有前缀的C 和 Objective-C 符号是全局可用的 Swift 模块系统可以消除歧义谨记,每个源文件都将导入到相同的命名空间中。内容概览值与引用 协议与泛型 通过 KeyPath 查找属性...

2019-07-02 12:58:00 222

原创 (WWDC) 实践 Combine

本篇为 初探 Combine 的续篇。内容概览Publisher & SubscriberFailure Handling OperatorScheduled OperatorCancellationSubjectSwiftUI BindableObject集成 CombinePublisher & Subsc...

2019-06-26 14:12:00 206

原创 (WWDC) 初探 Combine

内容概览前言CombinePublishersSubscribersOperators前言假设你需要构建如下应用:App要求:实时验证用户名是否有效匹配密码响应用户界面你会如何实现?实现的过程会应用到哪些概念?你需要使用 Target/Action 来获取输入框的最新值,使用计时器来实现...

2019-06-19 14:18:00 130

原创 (WWDC) 理解 Swift 性能

理解如何实现才能更好地去理解性能内容概览内存分配 引用计数 方法分发 协议类型 泛型代码 总结考虑性能的维度内存分配在栈上分配、回收内存时,只需要移动栈指针即可完成操作。操作的成本如同给一个整型变量赋值。在堆上分配内存时,需要在复杂的堆数据结构中寻找未被使用的大小适合的内存。在堆上回收内存时,需要找到合适的...

2019-06-12 13:23:00 790

原创 (WWDC) 高级iOS应用程序架构和模式

内容概览前言设计信息流定义明确的责任用不变性进行简化前言大多数大型应用的架构都会经历从简单到复杂的过程。随着业务逻辑不断增多,应用需要处理的任务也会越来越繁杂,各种bug也会显现出来。如果应用没有采用合适的软件架构和模式,问题将变得更加棘手。你对此是否深有体会?简单架构规模逐步扩大的简单架构...

2019-06-05 11:44:00 131

原创 (WWDC) Swift 和 Objective-C 的互操作性

Xcode根据Objective-C代码自动生成的Swift代码内容概览Swift 与 Objective-C 交互错误处理为空性标注轻量级泛型Kindof 类型总结Swift 与 Objective-C 交互Swift方法什么时候暴露给Objective-C?NSObject基类方法的访问控制不是 ...

2019-05-29 12:05:00 329

原创 (WWDC) 理解 Undefined Behavior

内容概览什么是 undefined behavior?编译器 和 undefined behavior安全性问题使用工具进行问题检测Swift 更安全什么是 undefined behavior?本国际标准中未作任何规定的行为 —— ISO C++14 Standard当你的代码语法正确,但是执行的行为不在语言准许的范围...

2019-05-22 13:54:00 477

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除