Fork me on GitHub

楚权的世界

Seek the wonder of life.

在 CocoaPods 中,podspec 文件主要用于描述一个 pod 库的基本信息,包括:名称、版本、源、依赖等等。本文,我们来介绍一下 CocoaPods-Core 中另一个重要的部分——podspec。

阅读全文 »

作为 iOS 开发者,我们都知道 Podfile 是 CocoaPods 用于描述 Xcode 项目依赖的配置文件。当需要为项目添加依赖时,我们只需要在 Podfile 中声明一个 pod 即可,比如:

阅读全文 »

上一篇文章我们介绍了 Xcode 中的各种概念,本文我们来看看这些概念在 Xcode 中的具体表示。其中,有一个最常见的文件 project.pbxproj,其描述了描述了整个 Xcode Project 的相关信息,包括:文件、Target、Product 等。另外,Xcode Workspace 则使用 contents.xcworkspacedata 进行描述,主要描述了其所包含的 Project 的位置。Xcode Scheme 则使用 .xcscheme 后缀的文件进行描述。

阅读全文 »

Xcode 有非常多的概念,比如:workspace、project、target、product、scheme 等,这些概念之间有着千丝万缕的关系,当我们理解了这些概念及其关系之后,会对整个 Xcode 工程体系有一个整体的理解,对我们自身工程能力的提升也会有所帮助。本文将对这些概念及其关系进行梳理,从而为后续的学习提供基础。

阅读全文 »

CLAide 一文中,我们了解到 CocoaPods 是基于 CLAide 开发的一款依赖管理工具,也是一款命令行工具。本文,我们将基于 CLAide 开发一款简易的命令行工具——饮料制作器(BeverageMaker)。

阅读全文 »

源码解读——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 工具链,并整理出本文以供后续的学习。

阅读全文 »
0%