如何使用 CLAide 开发命令行工具?
在 CLAide 一文中,我们了解到 CocoaPods 是基于 CLAide 开发的一款依赖管理工具,也是一款命令行工具。本文,我们将基于 CLAide 开发一款简易的命令行工具——饮料制作器(BeverageMaker)。
Swift 4.0 支持了一个新的语言特性——Codable,其提供了一种非常简单的方式支持模型和数据之间的转换。
在 《Swift
泛型协议》 中,我们探讨了如何基于类型擦除技术解决 Swift
泛型协议的存储问题,通过定义一个类型擦除包装器 AnyPrinter
解决了泛型协议 Printer
的存储问题。但是,AnyPrinter
并没有显式地引用
base
实例,因为当我们定义一个泛型类型的属性时,编译器会报错。
之前在一些分享会上经常听到 类型擦除(Type Erase)这个概念,从其命名上大概知道它要干什么,但是对于为什么要用它?以及什么场景下使用它?对此,我并没有深刻的理解。于是,借着假期好好研究了一下。问题的一切要从泛型协议说起。
最近准备魔改一下 R.swift 以支持 Pod 库生成对应的
R.generated.swift
文件。经研究后发现,R.swift 的本质是使用
Swift Package Manager(简称 SPM) 开发了一个命令行工具
rswift
。很显然,要想魔改 R.swift,必须要学习如何使用 Swift
Package Manager
来开发命令行工具。本文,则通过一个简单的例子来对此进行介绍。
工作中经常会听到 “协程” 这个概念,第一次听到时,我就去查阅相关教材,发现根本就没有介绍“协程”的。于是上网查阅了相关的解释,当时大概理解了它是干什么的,但是深入的细节并不了解。为了搞明白协程,趁着假期我好好研究了一下协程,然后产出本文作为学习笔记进行总结,以用于后续进行回顾。
Xcode 10 中的 new build system 是使用 Swift 从零开始编写实现的,其在性能和可靠性方面有着显著的提升。
本文,我们将来探索一下 Xcode 构建的幕后原理,这一切都是从在我们点击了
Xcode 的 “build” 按钮(或按下了快捷键
Command + B
)之后开始的。
在软件开发中,静态库和动态库在各个方面为我们提供了便利。在计算机专业相关课程中,我们学习过静态库和动态库的一些理论,那么这些理论如何映射到 iOS 开发之中呢?iOS 中有很多相关概念和术语,对此,我并不是非常清晰。为了能够向编译优化的最终目标更近一步,我花了些时间进行了学习,并总结此文以供回顾复习。如果有什么写得不对的地方,欢迎指正。
在日常开发中,绝大多数软件都是基于一系列的库(Library)构建而成的,这些库包括平台所提供的库、软件自身的内建库以及第三方库。库的实现主要包括两部分:接口(interface,或称 API)和 实现(Implementation)。在 C 家族的语言中,一般都通过包含(include)头文件(header files)的方式来访问库的接口,如下所示。
一直以来,我对 Ruby 工具链环境都没有一个系统的认识,这使得我在 iOS 开发时遇到的 Ruby 环境问题都难以把握其本质原因。最近开始学习 Ruby 开发,借此机会深入学习了一下 Ruby 工具链,并整理出本文以供后续的学习。
本文收录了一些常用的 Linux 基本命令。
本文对 zsh 补全系统进行了简单的介绍,然后分析了一个完整的示例,该示例可以作为一个新的补全脚本的起点。剩余内容对示例补全脚本进行了简要的分析和介绍。