摘要: 实际项目开发中,我们经常会需要对系统的UI控件等进行封装,以达到统一修改、重复代码少、复用性高等效果。OC中,我们一般通过Category来给现有类添加方法;而在Swift中,我们使用Extension来扩展现有类的功能。 1.先看一个完整的扩展示例 【注意】:需要注意一下这里的方法参数,都是可选类 阅读全文
posted @ 2016-07-19 14:17 LeeGof 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 1.回忆一下OC中的单例实现 + (instancetype)sharedManager; 2.Swift中的单例实现 在Swift中,有多种方式可以创建单例,比较常用也推荐使用的是如下的方式: 提供一个空的私有init()方法,可以保证单例是真正唯一的,避免外部对象通过访问init方法创建单例类的 阅读全文
posted @ 2016-07-19 13:52 LeeGof 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 在OC中,我们经常会用typedef关键字来声明Block,例如: 在Swift中,typedef关键字替换成了typealias。实际项目开发中,我们常用的闭包宏定义如下: 阅读全文
posted @ 2016-07-19 13:17 LeeGof 阅读(2640) 评论(0) 推荐(0) 编辑
摘要: Swift 中没有宏定义,苹果建议使用let 或者 get 属性来替代宏定义值。虽然没有#define,但我们仍然可以使用 #if 并配合编译的配置来完成条件编译。下面会列出Swift项目开发中的一些常用宏定义,并提供源码。 1.常用字体宏定义 2.常用颜色宏定义 3.常用变量/方法定义 【注意】: 阅读全文
posted @ 2016-07-19 12:02 LeeGof 阅读(2079) 评论(0) 推荐(0) 编辑
摘要: 经历前面三部分的学习之后,我们对于Swift的有了基本的了解,知道它的基础语法,也知道了类、结构体、枚举、协议、扩展等等内容。但知道上面这些内容,并不代表我们就能很好的进行实际的项目开发了,本部分内容将手把手的教你进行Swift的项目开发。 1.新建Swift项目 打开XCode,选择【File】 阅读全文
posted @ 2016-07-19 11:45 LeeGof 阅读(857) 评论(0) 推荐(0) 编辑
摘要: 访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别。这个特性可以让我们隐藏代码的一些实现细节,并且可以为其他人可以访问和使用的代码提供接口。 你可以明确地给单个类型(类、结构体、枚举)设置访问级别,也可以给这些类型的属性、方法、构造器、下标等设置访问级别。协议也可以被限定在一定的范围内使用 阅读全文
posted @ 2016-07-18 22:39 LeeGof 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 泛型代码让你能够根据自定义的需求,编写出适用于任意类型、灵活可重用的函数及类型。它能让你避免代码的重复,用一种清晰和抽象的方式来表达代码的意图。 1.泛型所解决的问题 上面的函数实现了交换两个 Int 变量的值的功能,但是它只能交换 Int 值,如果你想要交换两个 String 值或者 Double 阅读全文
posted @ 2016-07-18 22:17 LeeGof 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体或枚举都可以采纳协议,并为协议定义的这些要求提供具体实现。某个类型能够满足某个协议的要求,就可以说该类型“符合”这个协议。 除了采纳协议的类型必须实现的要求外,还可以对协议进行扩展,通过扩展来实现一部分 阅读全文
posted @ 2016-07-18 21:56 LeeGof 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 扩展 就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即 逆向建模 )。扩展和 Objective-C 中的分类类似。 Swift 中的扩展可以: 1.扩展语法 如果通过扩展为一个已有类型添加新功能,那么新功能对该类型的所有已有实例都 阅读全文
posted @ 2016-07-18 20:56 LeeGof 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 枚举常被用于为特定类或结构体实现某些功能。类似的,枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。 要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的{}内,而且可以根据需要定义 阅读全文
posted @ 2016-07-18 20:42 LeeGof 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 类型转换在 Swift 中使用 is 和 as 操作符实现。is用于判断实例的类型,as用于转换实例的类型。 1.从一个示例谈起 2.Any 和 AnyObject 的类型转换 Swift 为不确定类型提供了两种特殊的类型别名: 阅读全文
posted @ 2016-07-18 20:33 LeeGof 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 错误处理(Error handling)是响应错误以及从错误中恢复的过程。Swift 提供了在运行时对可恢复错误的抛出、捕获、传递和操作的一流支持。 某些操作无法保证总是执行完所有代码或总是生成有用的结果。可选类型可用来表示值缺失,但是当某个操作失败时,最好能得知失败的原因,从而可以作出相应的应对。 阅读全文
posted @ 2016-07-18 18:34 LeeGof 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 可选链式调用是一种可以在当前值可能为nil的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是nil,那么调用将返回nil。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为nil,整个调用链都会失败,即返回nil。 Swift 的可选链式调用和 Ob 阅读全文
posted @ 2016-07-18 18:16 LeeGof 阅读(392) 评论(0) 推荐(0) 编辑
摘要: Swift 使用自动引用计数(ARC)机制来跟踪和管理应用程序的内存。通常情况下,Swift 内存管理机制会一直起作用,我们无须自己来考虑内存的管理。ARC 会在类的实例不再被使用时,自动释放其占用的内存。 引用计数仅仅应用于类的实例。结构体和枚举类型是值类型,不是引用类型,也不是通过引用的方式存储 阅读全文
posted @ 2016-07-18 17:43 LeeGof 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示. 1.析构过程 2.示例 阅读全文
posted @ 2016-07-18 16:16 LeeGof 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置实例中每个存储型属性的初始值和执行其他必须的设置或初始化工作。 与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化 阅读全文
posted @ 2016-07-18 15:54 LeeGof 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 一个类可以继承另一个类的方法、属性和其它特性。当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclass)。在 Swift 中,继承是区分「类」与其它类型的一个基本特征。 在 Swift 中,类可以调用和访问超类的方法、属性和下标,并且可以重写(overri 阅读全文
posted @ 2016-07-18 14:29 LeeGof 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 下标可以定义在类、结构体和枚举中,是访问集合、列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。 一个类型可以定义多个下标,通过不同索引类型进行重载。下标不限于一维,也可以定义具有多个入参的下标满足自定义类型的需求。 1.下标语法(关键字:subscript 阅读全文
posted @ 2016-07-18 13:11 LeeGof 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一。 1.实例方法 实例方法是属于某 阅读全文
posted @ 2016-07-18 13:00 LeeGof 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 属性将值跟特定的类、结构或枚举关联。存储属性存储常量或变量作为实例的一部分,而计算属性计算(不是存储)一个值。计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。 存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接作用于类型本身,这种属性称为类型属性。 另外,还可以定义属性观 阅读全文
posted @ 2016-07-18 11:01 LeeGof 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 类和结构体是构建代码所用的一种通用且灵活的构造体。我们可以使用完全相同的语法规则来为类和结构体定义属性(常量、变量)和添加方法,从而扩展类和结构体的功能。 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类或者结构体,系 阅读全文
posted @ 2016-07-15 23:09 LeeGof 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为“原始”值),则该值的类型可以是字符串,字符,或是一个整型值或浮点数。 1.枚举语法 示例: 2.使用 Switch 阅读全文
posted @ 2016-07-15 21:17 LeeGof 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数比较相似。 闭包采取如下三种形式之一: 闭包一般形式语法: OC中的闭包语法:^ 返回值类型 参数列表 表达式。示例如下: 1.闭包表 阅读全文
posted @ 2016-07-15 20:56 LeeGof 阅读(420) 评论(0) 推荐(1) 编辑
摘要: 函数是用来完成特定任务的独立的代码块。 Swift 统一的函数语法足够灵活,可以用来表示任何函数,包括从最简单的没有参数名字的 C 风格函数,到复杂的带局部和外部参数名的 Objective-C 风格函数。参数可以提供默认值,以简化函数调用。参数也可以既当做传入参数,也当做传出参数,也就是说,一旦函 阅读全文
posted @ 2016-07-15 17:16 LeeGof 阅读(361) 评论(0) 推荐(0) 编辑
摘要: Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不同代码分支的if、guard和switch语句,还有控制流程跳转到其他代码的break和continue语句。 Swift 还增加了for-in循环,用来更简单地遍历数组(array),字典(diction 阅读全文
posted @ 2016-07-15 16:52 LeeGof 阅读(233) 评论(0) 推荐(0) 编辑
摘要: Swift 语言提供Arrays、Sets和Dictionaries三种基本的集合类型用来存储集合数据。数组(Arrays)是有序数据的集合。集合(Sets)是无序无重复数据的集合。字典(Dictionaries)是无序的键值对的集合。 如果创建一个Arrays、Sets或Dictionaries并 阅读全文
posted @ 2016-07-15 16:02 LeeGof 阅读(349) 评论(0) 推荐(0) 编辑
摘要: String是例如"hello, world","albatross"这样的有序的字符类型的值的集合。通过String类型来表示。 一个String的内容可以用许多方式读取,它包括一个字符值的集合。 1.字符串字面量 字符串字面量是由双引号 ("") 包裹着的具有固定顺序的文本字符集。 2.初始化空 阅读全文
posted @ 2016-07-15 15:53 LeeGof 阅读(359) 评论(0) 推荐(0) 编辑
摘要: Swift 支持大部分标准 C 语言的运算符,分为一元、二元和三元运算符。 一元运算符对单一操作对象操作(如 -a)。一元运算符分前置运算符和后置运算符,前置运算符需紧跟在操作对象之前(如 !b),后置运算符需紧跟在操作对象之后(如 i++)。 二元运算符操作两个操作对象(如 2 + 3),是中置的 阅读全文
posted @ 2016-07-15 15:22 LeeGof 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 1.常量和变量 常量和变量必须在使用前声明,用let来声明常量,用var来声明变量。常量的值一旦设定就不能改变,而变量的值可以随意更改。 Swift 不强制要求在每条语句的结尾处使用分号(;),当然,也可以按照自己的习惯添加分号。有一种情况下必须要用分号,即在同一行内写多条独立的语句。 2.类型标注 阅读全文
posted @ 2016-07-15 14:57 LeeGof 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理。如对原版感兴趣,可以直接单击链接阅读和学习。 第一部分 基础篇 1.基本介绍 2.运算符 3.字符串和字符 4.集合 5.控制流 6.函数 7.闭包 8.枚举 第二部分 进 阅读全文
posted @ 2016-07-15 13:48 LeeGof 阅读(780) 评论(0) 推荐(1) 编辑