Swift 3.0
xiaoxiaobukuang
欢迎大家提意见
展开
-
Swift 数据类型
数据类型: ①、Int ②、UInt ③、浮点数 ④、布尔值 ⑤、字符串 ⑥、字符 ⑦、可选类型一、Int一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:在32位平台上,Int和Int32长度相同。在64位平台上,Int和Int64长度相同。除非你需要特定长度的整数,一般来说使用Int就原创 2017-08-09 13:22:53 · 374 阅读 · 0 评论 -
Swift Label计算高度
// 计算字生符串的宽度,高度let string = "一个叫张三的人,存了三百两银子,想把它藏起来,又怕被人偷去,想来想去,还是把它埋起来好。于是找了个隐蔽地方挖了个坑把银子埋了,但还是不放心,就在埋银子的地方立了块牌子,上面写道“此地无银三百两”。他的邻居李四看到了这个牌子,大笑道:“这不是明明告诉人们,这里有三百两银子吗?”于是就把银子挖走了,但也不放心,怕张三怀疑自己,于是就在那块牌子边原创 2017-09-26 11:11:19 · 2889 阅读 · 0 评论 -
Swift 闭包
闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。 Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 匿名函数比较相似。 全局函数和嵌套函数其实就是特殊的闭包。 闭包的形式有: 全局函数 嵌套函数 闭包表达式 有名字但不能捕获任何值。 有名字,也能捕获封闭函数内的值。 无名闭包,使原创 2017-08-31 17:11:54 · 391 阅读 · 0 评论 -
Swift 枚举
枚举简单的说也是一种数据类型,只不过是这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合。 Swift 的枚举类似于 Objective C 和 C 的结构,枚举的功能为:它声明在类中,可以通过实例化类来访问它的值。枚举也可以定义构造函数(initializers)来提供一个初始成员值;可以在原始的实现基础上扩展它们的功能。可以遵守协议(protocols)来提供标准的功能。原创 2017-08-31 17:53:48 · 324 阅读 · 0 评论 -
Swift 结构体
Swift 结构体是构建代码所用的一种通用且灵活的构造体。 我们可以为结构体定义属性(常量、变量)和添加方法,从而扩展结构体的功能。 与 C 和 Objective C 不同的是:结构体不需要包含实现文件和接口。结构体允许我们创建一个单一文件,且系统会自动生成面向其它代码的外部接口。结构体总是通过被复制的方式在代码中传递,因此它的值是不可修改的。一、语法我们通过关键字 struct 来定义原创 2017-08-31 18:07:36 · 262 阅读 · 0 评论 -
Swift 构造过程
构造过程是为了施用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个属性设置初始值和未其执行必要的准备和初始化任务。 Swift 构造函数使用 init() 方法。 与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。 类实例也可以通过定义析构器(deinitializer)在类实例释放原创 2017-09-18 09:38:37 · 534 阅读 · 0 评论 -
Swift 类
Swift 类是构建代码所用的一种通用且灵活的构造体。 我们可以为类定义属性(常量、变量)和方法。 与其他编程语言所不同的是,Swift 并不要求你为自定义类去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类,系统会自动生成面向其它代码的外部接口。一、类和结构体对比(1)、Swift 中类和结构体有很多共同点。共同处在于:定义属性用于存储值定义方法用于提供功能定义附属脚本用原创 2017-09-01 10:55:25 · 326 阅读 · 0 评论 -
Swift 析构过程
在一个类的实例被释放之前,析构函数被立即调用。用关键字deinit来标示析构函数,类似于初始化函数用init来标示。析构函数只适用于类类型。一、析构过程原理Swift会自动释放不再需要的实例以释放资源。 Swift通过自动引用计数(ARC)处理实例的内存管理。 通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。 例如,如果创建了一个自定义的类来打原创 2017-09-20 10:59:23 · 356 阅读 · 0 评论 -
Swift 可选链
可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能是nil。 可选链返回两个值:如果目标有值,调用就会成功,返回该值如果目标为nil,调用将返回nil多次请求或调用可以被链接成一个链,如果任意一个节点为nil将导致整条链失效。一、可选链可替代强制解析通过在属性、方法、或下标脚本的可选值后面放一个问号(?),即可定义一个可选链。原创 2017-09-20 11:17:37 · 307 阅读 · 0 评论 -
Swift 属性
Swift 属性将值跟特定的类、结构或枚举关联。 属性可分为存储属性和计算属性: 存储属性 计算属性 存储常量或变量作为实例的一部分 计算(而不是存储)一个值 用于类和结构体 用于类、结构体和枚举存储属性和计算属性通常用于特定类型的实例。 属性也可以直接用于类型本身,这种属性称为类型属性。 另外,还可以定义属性观察器来监控属性值的变化,以此来触发一个自定义的操作。属性观原创 2017-09-12 16:21:40 · 371 阅读 · 0 评论 -
Swift 自动引用计数(ARC)
Swift使用自动引用技术(ARC)这一机制来跟踪和管理应用程序的内存。通常情况下我们不需要去手动释放内存,因为ARC会在类的实例不再被使用时,自动释放其占有的内存。 但在有些时候我们还是需要在代码中实现内存管理。一、ARC 功能当每次使用init()方法创建一个类的新的实例的时候,ARC会分配一大块内存用来存储实例的信息。内存中会包含实例的类型信息,以及这个实例所有相关属性的值。当实例不再原创 2017-09-20 15:41:45 · 262 阅读 · 0 评论 -
Swift 类型转换
Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或子类的实例。 Swift中类型转换使用 is 和 as 操作符实现,is用于检测值的类型, as 用于转换类型。 类型转换也可以用来检查一个类是否实现了某个协议。一、定义一个类层次以下定义了三个类:Subjects、Chemistry、Maths,Chemistry 和 Maths 继承了 Subjects。 代原创 2017-09-21 10:40:15 · 255 阅读 · 0 评论 -
Swift 扩展
扩展就是向一个已有的类、结构体或枚举类型添加新功能。 扩展可以对一个类型添加新的功能,但是不能重写已有的功能。 Swift 中的扩展可以:添加计算型属性和计算型静态属性定义实例方法和类型方法提供新的构造器定义下标定义和使用新的嵌套类型使一个已有类型符合某个协议语法扩展声明使用关键字 extension:extension SomeType { // 加到SomeType的新原创 2017-09-21 13:05:27 · 345 阅读 · 0 评论 -
Swift 协议
协议规定了用来实现某一特定功能所必须的方法和属性。 任意能够满足协议要求的类型被称为遵循(conform)这个协议。 类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能。语法协议的语法格式如下:protocol SomeProtocol { // 协议内容}要使类遵循某个协议,需要在类型名称后加上协议名称,中间以冒号:分隔,作为类型定义的一部分。遵循多个协议时原创 2017-09-21 15:06:12 · 388 阅读 · 0 评论 -
Swift 函数
Swift 函数用来完成特定任务的独立的代码块。 Swift使用一个统一的语法来表示简单的C语言风格的函数到复杂的Objective-C语言风格的方法。函数声明: 告诉编译器函数的名字,返回类型及参数。函数定义: 提供了函数的实体。Swift 函数包含了参数类型及返回值类型:一、函数定义Swift 定义函数使用关键字 func。 定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。原创 2017-08-30 14:11:18 · 447 阅读 · 0 评论 -
Swift 字典
Swift 字典用来存储无序的相同类型数据的集合,Swift 字典会强制检测元素的类型,如果类型不同则会报错。 Swift 字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。 和数组中的数据项不同,字典中的数据项并没有具体顺序。 Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的。 如果创建一个字典,并赋值给一个变量,则创建的字典就是可以原创 2017-08-30 13:20:00 · 526 阅读 · 0 评论 -
Swift 继承
继承我们可以理解为一个类获取了另外一个类的方法和属性。 当一个类继承其他类时,继承类叫子类,被继承类叫超类(或父类) 在Swift中,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写它们。 我们也可以为类中继承来的属性添加属性观察器。一、基类没有继承其它类的类,称之为基类(Base Class)。 以下实例中我们定义了基类 StudDetails ,描述了学生(stname)及其各科原创 2017-09-15 13:12:43 · 215 阅读 · 0 评论 -
Swift 常量
常量一旦设定,在程序运行时就无法改变其值。 常量可以是任何的数据类型如:整型常量,浮点型常量,字符常量或字符串常量。同样也有枚举类型的常量: 常量类似于变量,区别在于常量的值一旦设定就不能改变,而变量的值可以随意更改。一、常量声明常量使用关键字 let 来声明,语法如下:let constantName = < initial value >let constA = 42print(const原创 2017-08-09 14:49:43 · 380 阅读 · 0 评论 -
Swift 可选(Optionals)类型
Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示”那儿有一个值,并且它等于 x “或者”那儿没有值”。 Swfit语言定义后缀?作为命名类型Optional的简写,换句话说,以下两种声明是相等的:var optionalInteger: Int?var optionalInteger: Optional<Int> 注意,在类型和 ?之间没有空格。Optional原创 2017-08-09 14:31:41 · 461 阅读 · 0 评论 -
Swift 变量
变量是一种使用方便的占位符,用于引用计算机内存地址。 Swift 每个变量都指定了特定的类型,该类型决定了变量占用内存的大小,不同的数据类型也决定可存储值的范围。基本的数据类型,包括整形Int、浮点数Double和Float、布尔类型Bool以及字符串类型String。此外,Swift还提供了其他更强大数据类型, Optional, Array, Dictionary, Struct, 和 Cla原创 2017-08-09 14:05:11 · 463 阅读 · 0 评论 -
Swift 字面量
所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。 比如在下面:let aNumber = 3 //整型字面量let aString = "Hello" //字符串字面量let aBool = true //布尔值字面量一、整型字面量整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为原创 2017-08-09 17:59:25 · 311 阅读 · 0 评论 -
Swift 运算符
运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。 Swift 提供了以下几种运算符:算术运算符比较运算符逻辑运算符位运算符赋值运算符区间运算符其他运算符一、算术运算符以下表格列出了 Swift 语言支持的算术运算符,其中变量 A 为 10,变量 B 为 20: 运算符 描述 实例 + 加号 A + B 结果为 30 − 减号 A − B 结原创 2017-08-10 16:51:16 · 563 阅读 · 0 评论 -
Swift 条件语句
条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句。主要包括如下几种类型的条件语句:一、if 语句if 语句 由一个布尔表达式和一个或多个执行语句组成。var varA:Int = 10;/* 检测条件 */if varA < 20 { /* 如果条件语句为 true 执行以下程序 */ print("varA 小于原创 2017-08-18 16:05:46 · 328 阅读 · 0 评论 -
Swift 循环
一、循环类型Swift 语言提供了以下几种循环类型1、for-in遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。 例1:for index in 1...5 { print("\(index) 乘于 5 为:\(index * 5)")}例2:var someInts:[Int] = [10, 20, 30]for index in someInts原创 2017-08-18 16:14:58 · 409 阅读 · 0 评论 -
Swift 字符(Character)
一、定义let char1: Character = "A"let char2: Character = "B"print("char1 的值为 \(char1)")print("char2 的值为 \(char2)")输出结果:char1 的值为 Achar2 的值为 B 注意:如果你想在 Character(字符) 类型的常量中存储更多的字符,则程序执行会报错,如下所示:// Swi原创 2017-08-22 17:18:05 · 1621 阅读 · 0 评论 -
Swift 方法
Swift 方法是与某些特定类型相关联的函数 在 Objective-C 中,类是唯一能定义方法的类型。但在 Swift 中,你不仅能选择是否要定义一个类/结构体/枚举,还能灵活的在你创建的类型(类/结构体/枚举)上定义方法。一、实例方法在 Swift 语言中,实例方法是属于某个特定类、结构体或者枚举类型实例的方法。 实例方法提供以下方法:可以访问和修改实例属性提供与实例目的相关的功能实例原创 2017-09-14 14:59:26 · 280 阅读 · 0 评论 -
Swift 下标脚本
下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问对象、集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法。 举例来说,用下标脚本访问一个数组(Array)实例中的元素可以这样写 someArray[index] ,访问字典(Dictionary)实例中的元素可以这样写 someDictionary[key]。原创 2017-09-14 16:30:20 · 274 阅读 · 0 评论 -
Swift 访问控制
访问控制可以限定其他源文件或模块中代码对你代码的访问级别。 你可以明确地给单个类型(类、结构体、枚举)设置访问级别,也可以给这些类型的属性、函数、初始化方法、基本类型、下标索引等设置访问级别。 协议也可以被限定在一定的范围内使用,包括协议里的全局常量、变量和函数。 访问控制基于模块与源文件。 模块指的是以独立单元构建和发布的 Framework 或 Application。在 Swift 中原创 2017-09-22 17:35:39 · 498 阅读 · 0 评论 -
Swift 数组
Swift数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。 Swift数组会强制检测元素的类型,如果类型不同则会则会报错,Swift数组应该遵循像Array < Element >这样的形式,气宗Element是这个数组中唯一允许存在的数据类型。如果创建一个数组,并赋值给一个变量,则创建的集合就是可以修改的。这意味着在创建数组后,可以通过添加、删除、修改的方式改变原创 2017-08-29 15:59:07 · 424 阅读 · 0 评论 -
Swift 字符串
一、定义1、创建字符串//使用字符串字面量var stringA = "Hello, World!"print( stringA )//String 实例化var stringB = String("Hello, World!")print( stringB )输出结果Hello, World!Hello, World!2、空字符串// 使用...原创 2017-08-22 09:47:09 · 539 阅读 · 0 评论 -
Swift 泛型
Swift 提供了泛型让你写出灵活且可重用的函数和类型。 Swift 标准库是通过泛型代码构建出来的。 Swift 的数组和字典类型都是泛型集。 你可以创建一个Int数组,也可创建一个String数组,或者甚至于可以是任何其他Swift 的类型数据数组。 以下实例是一个非泛型函数 exchange 用来交换两个 Int 值:实例// 定义一个交换两个变量的函数func swapTwoInt原创 2017-09-21 17:51:58 · 322 阅读 · 0 评论