Protocol-Oriented Programming with Swift 笔记(下)

接着来学习后半部分 第四章 关于协议的一切 本章的主题有: 如何定义协议需要的属性和方法 如何使用协议继承和组合 如何将一个协议作为类型使用 协议如何实现多态 如何在协议中使用相关值(Associated values) 如何在 Swift 中使用 delegation 模式 如何设计协议的类型要求 协议定义 可以定义属性和方法,如果是值类型遵守协议,方法涉及到修改自身属性记得要加 mutating 关键字 protocol FullName { var »

Protocol-Oriented Programming with Swift 笔记(上)

最近买了《Protocol-Oriented Programming with Swift》,大部分都是讲基础,也就设计模式那里有点看头,既然看了就做点笔记记录一下,做点微小的贡献。 第一章 面向对象和面向协议编程 面向对象编程的三个特征:封装、继承、多态;当我们想使用一个单一的接口来表示多种类型,就可以使用多态,多态可以让我们用统一的方式与多种类型进行交互。 面向对象编程的缺点: 子类初始化时要先初始化父类,漏掉初始化子类参数的话,容易导致沿用父类参数(要对父类很熟悉) 面向对象编程只能使用引用类型,而且新手容易出错 一个类只允许有一个父类, »

闭包捕获语义第一弹:一网打尽!

尽管现在已经是 ARC 的天下了,但对于程序员来说理解内存管理和对象的生命周期依然是一门必修课。闭包就是其中一个特例,尤其在 Swift 中,闭包被广泛应用,并且和 Objc 的闭包相比,Swift 的闭包也有着不同的捕获语义。下面让我们看看闭包是如何工作的。 这是一篇译文,原文链接 介绍 在 Swift 中,闭包捕获他们所引用的变量:虽然这些变量在闭包之外声明,但只要在闭包内使用都会默认被闭包保留引用(retain),这是为了确保闭包执行时, »

当 Swift 的结构体遇上 NSCoding

昨天在写一个 Model,需要用到 NSCoding 序列化,之前用 Class 是没问题的,但换到Struct 就歇菜了,NSCoding 并不支持 Swift 的结构体。 放 🐶 一搜,找到两种解决方法,这里总结一下: 方法一 为 Struct 增加一个 HelperClass 属性成员(Class),让后让它遵守 »

在 Swift 中使用泛型和结构体来构建网络层

objc.io 推出一个新的谈话节目,一周一期,每期的主题固定,用 20 多分钟的时间去详述一个主题,很有意思,近期做个记录,内容比较简单就不翻译了,主要记录一下背后的思想。 一般网络层所做的工作无非就是发起请求,得到 NSData,然后进行 json 解析,接着映射成对应的 Model,最后传递给回调函数。比如我想得到一个填满 Episodes 类型的数组,但网络只能给你返回一个 id »

模式匹配第四弹:if case, guard case, for case

好久没更新了,最近在翻译一本关于 iOS 安全方面的书,这个月底交工。one more thing,加了微信打赏,各位看官觉得内容不错还请支持一下 😊 英文原文:Pattern Matching, Part 4: if case, guard case, for case 现在我们来重新回顾下前三弹模式匹配的各种语法 第一弹,第二弹,第三弹,第四弹是本系列的最后一篇文章, »

GCD 最佳实践指南

Grand Central Dispatch 大中枢派发😂 或俗称 GCD 是一件极其强大的武器。他为你提供了很多底层工具,比如队列和信号量,你可以组合这些工具来达成自己想要的多线程效果。不幸的是,这些基于 C 的 API 晦涩难懂,并且想要将低级工具组合起来实现高抽象层级 API 的效果(译者注:类似于 NSOperation)也不是一件容易的事。这篇文章,我来教大家如何利用 GCD »