随笔分类 - Swift学习和实践
Swift相关笔记
摘要:自定义视图是在项目开发中经常会面临的工作,通过对视图进行封装,能达到更好的复用性,并使得VC里面的逻辑更加清晰。本篇将对实际项目中常用的图片轮播进行封装。 1.先从源码看起 首先,定义了一个枚举类型,用于区分图片的存储类型:网络图片还是本地图片。 然后对图片轮播类进行了功能封装。 最后,通过扩展来遵
阅读全文
摘要:和OC一样,Swift中也可以添加运行时属性。下面将提供一个完整的例子,演示如何给按钮点击事件添加运行时属性。 1.示例 2.示例说明 在Swift中,闭包不属于AnyObject,因此,需要做一个相互转换。如下所示: 使用方式如下:
阅读全文
摘要:实际项目开发中,我们经常会需要对系统的UI控件等进行封装,以达到统一修改、重复代码少、复用性高等效果。OC中,我们一般通过Category来给现有类添加方法;而在Swift中,我们使用Extension来扩展现有类的功能。 1.先看一个完整的扩展示例 【注意】:需要注意一下这里的方法参数,都是可选类
阅读全文
摘要:1.回忆一下OC中的单例实现 + (instancetype)sharedManager; 2.Swift中的单例实现 在Swift中,有多种方式可以创建单例,比较常用也推荐使用的是如下的方式: 提供一个空的私有init()方法,可以保证单例是真正唯一的,避免外部对象通过访问init方法创建单例类的
阅读全文
摘要:在OC中,我们经常会用typedef关键字来声明Block,例如: 在Swift中,typedef关键字替换成了typealias。实际项目开发中,我们常用的闭包宏定义如下:
阅读全文
摘要:Swift 中没有宏定义,苹果建议使用let 或者 get 属性来替代宏定义值。虽然没有#define,但我们仍然可以使用 #if 并配合编译的配置来完成条件编译。下面会列出Swift项目开发中的一些常用宏定义,并提供源码。 1.常用字体宏定义 2.常用颜色宏定义 3.常用变量/方法定义 【注意】:
阅读全文
摘要:经历前面三部分的学习之后,我们对于Swift的有了基本的了解,知道它的基础语法,也知道了类、结构体、枚举、协议、扩展等等内容。但知道上面这些内容,并不代表我们就能很好的进行实际的项目开发了,本部分内容将手把手的教你进行Swift的项目开发。 1.新建Swift项目 打开XCode,选择【File】
阅读全文
摘要:访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别。这个特性可以让我们隐藏代码的一些实现细节,并且可以为其他人可以访问和使用的代码提供接口。 你可以明确地给单个类型(类、结构体、枚举)设置访问级别,也可以给这些类型的属性、方法、构造器、下标等设置访问级别。协议也可以被限定在一定的范围内使用
阅读全文
摘要:泛型代码让你能够根据自定义的需求,编写出适用于任意类型、灵活可重用的函数及类型。它能让你避免代码的重复,用一种清晰和抽象的方式来表达代码的意图。 1.泛型所解决的问题 上面的函数实现了交换两个 Int 变量的值的功能,但是它只能交换 Int 值,如果你想要交换两个 String 值或者 Double
阅读全文
摘要:协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体或枚举都可以采纳协议,并为协议定义的这些要求提供具体实现。某个类型能够满足某个协议的要求,就可以说该类型“符合”这个协议。 除了采纳协议的类型必须实现的要求外,还可以对协议进行扩展,通过扩展来实现一部分
阅读全文
摘要:扩展 就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即 逆向建模 )。扩展和 Objective-C 中的分类类似。 Swift 中的扩展可以: 1.扩展语法 如果通过扩展为一个已有类型添加新功能,那么新功能对该类型的所有已有实例都
阅读全文
摘要:枚举常被用于为特定类或结构体实现某些功能。类似的,枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。 要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的{}内,而且可以根据需要定义
阅读全文
摘要:类型转换在 Swift 中使用 is 和 as 操作符实现。is用于判断实例的类型,as用于转换实例的类型。 1.从一个示例谈起 2.Any 和 AnyObject 的类型转换 Swift 为不确定类型提供了两种特殊的类型别名:
阅读全文
摘要:错误处理(Error handling)是响应错误以及从错误中恢复的过程。Swift 提供了在运行时对可恢复错误的抛出、捕获、传递和操作的一流支持。 某些操作无法保证总是执行完所有代码或总是生成有用的结果。可选类型可用来表示值缺失,但是当某个操作失败时,最好能得知失败的原因,从而可以作出相应的应对。
阅读全文
摘要:可选链式调用是一种可以在当前值可能为nil的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是nil,那么调用将返回nil。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为nil,整个调用链都会失败,即返回nil。 Swift 的可选链式调用和 Ob
阅读全文
摘要:Swift 使用自动引用计数(ARC)机制来跟踪和管理应用程序的内存。通常情况下,Swift 内存管理机制会一直起作用,我们无须自己来考虑内存的管理。ARC 会在类的实例不再被使用时,自动释放其占用的内存。 引用计数仅仅应用于类的实例。结构体和枚举类型是值类型,不是引用类型,也不是通过引用的方式存储
阅读全文
摘要:析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示. 1.析构过程 2.示例
阅读全文
摘要:构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置实例中每个存储型属性的初始值和执行其他必须的设置或初始化工作。 与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化
阅读全文
摘要:一个类可以继承另一个类的方法、属性和其它特性。当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclass)。在 Swift 中,继承是区分「类」与其它类型的一个基本特征。 在 Swift 中,类可以调用和访问超类的方法、属性和下标,并且可以重写(overri
阅读全文
摘要:下标可以定义在类、结构体和枚举中,是访问集合、列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。 一个类型可以定义多个下标,通过不同索引类型进行重载。下标不限于一维,也可以定义具有多个入参的下标满足自定义类型的需求。 1.下标语法(关键字:subscript
阅读全文