Swift
文章平均质量分 70
winterLiao
这个作者很懒,什么都没留下…
展开
-
swift学习笔记(3)-字符串
字符串初始化、操作转载 2017-02-10 13:40:12 · 318 阅读 · 0 评论 -
swift学习笔记(15)- 可选链
使用可选链式调用代替强制展开通过在想调用的属性、方法、或下标的可选值后面放一个问号(?),可以定义一个可选链。这一点很像在可选值后面放一个叹号(!)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。为了反映可选链式调用可以在空值(nil)上调用的事实,不论这个调用的属性、方法及下标返回的值是不是可选值,它的返回结果都是一个可选值。你可以利用这转载 2017-03-03 20:30:00 · 356 阅读 · 0 评论 -
swift学习笔记(13)- 构造过程、析构过程
构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置实例中每个存储型属性的初始值和执行其他必须的设置或初始化工作。通过定义构造器来实现构造过程,这些构造器可以看做是用来创建特定类型新实例的特殊方法。与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。存储属性的初始赋值转载 2017-02-22 19:30:25 · 484 阅读 · 0 评论 -
swift学习笔记(16)- 错误处理
表示并抛出错误在 Swift 中,错误用符合Error协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。Swift 的枚举类型尤为适合构建一组相关的错误状态,枚举的关联值还可以提供错误状态的额外信息。例如,你可以这样表示在一个游戏中操作自动贩卖机时可能会出现的错误状态:enum VendingMachineError: Error { case invalidSelection转载 2017-03-04 17:01:43 · 431 阅读 · 0 评论 -
swift学习笔记(17)- 类型转换
定义一个类层次作为例子你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。下面的三个代码段定义了一个类层次和一个包含了这些类实例的数组,作为类型转换的例子。class MediaItem { var name: String init(name: String) { self.name = name转载 2017-03-06 16:20:31 · 387 阅读 · 0 评论 -
swift学习笔记(18)- 扩展
扩展作用添加计算型属性和计算型类型属性定义实例方法和类型方法提供新的构造器定义下标定义和使用新的嵌套类型使一个已有类型符合某个协议 在 Swift中,你甚至可以对协议进行扩展,提供协议要求的实现,或者添加额外的功能,从而可以让符合协议的类型拥有这些功能。你可以从协议扩展获取更多的细节。 注意 扩展可以为一个类型添加新的功能,但是不能重写已有的功能。扩展语法使用关键字 exte转载 2017-03-06 18:12:52 · 319 阅读 · 0 评论 -
swift学习笔记(19)- 协议
协议语法协议的定义方式与类、结构体和枚举的定义非常相似:protocol SomeProtocol { // 这里是协议的定义部分}要让自定义类型遵循某个协议,在定义类型时,需要在类型名称后加上协议名称,中间以冒号(:)分隔。遵循多个协议时,各协议之间用逗号(,)分隔:struct SomeStructure: FirstProtocol, AnotherProtocol { //转载 2017-03-09 10:23:02 · 386 阅读 · 0 评论 -
swift学习笔记(20)- 泛型
泛型函数泛型函数可以适用于任何类型,下面的 swapTwoValues(::) 函数是上面三个函数的泛型版本:func swapTwoValues<T>(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA}swapTwoValues(::) 的函数主体和 swapTwoInts(::)转载 2017-03-10 16:43:46 · 435 阅读 · 0 评论 -
swift学习笔记(21)- 访问控制
模块和源文件Swift 中的访问控制模型基于模块和源文件这两个概念。模块指的是独立的代码单元,框架或应用程序会作为一个独立的模块来构建和发布。在 Swift 中,一个模块可以使用 import 关键字导入另外一个模块。在 Swift 中,Xcode 的每个目标(例如框架或应用程序)都被当作独立的模块处理。如果你是为了实现某个通用的功能,或者是为了封装一些常用方法而将代码打包成独立的框架,这个框架就是转载 2017-03-13 14:18:42 · 339 阅读 · 0 评论 -
swift学习笔记(22)- 高级运算符
Swift 支持 C 语言中的全部位运算符。 主要记下特殊的高级运算符溢出运算符在默认情况下,当向一个整数赋予超过它容量的值时,Swift 默认会报错,而不是生成一个无效的数。这个行为为我们在运算过大或着过小的数的时候提供了额外的安全性。例如,Int16 型整数能容纳的有符号整数范围是 -32768 到 32767,当为一个 Int16 型变量赋的值超过这个范围时,系统就会报错:var poten转载 2017-03-13 15:28:06 · 278 阅读 · 0 评论 -
swift 简单易用类似新闻客户端的结构
一句话实现let segementVC = LWTSegementViewController()//设置栏目的标题数组segementVC.titleArray = ["社会","科技","娱乐","体育","美女","动物"]//设置每个栏目的控制器数组for (_, _) in segementVC.titleArray.enumerated() { let vc = Tes原创 2017-03-15 16:33:25 · 941 阅读 · 0 评论 -
swift学习笔记(14)- 解决循环强引用
自动引用计数的工作机制当你每次创建一个类的新的实例的时候,ARC 会分配一块内存来储存该实例信息。内存中会包含实例的类型信息,以及这个实例所有相关的存储型属性的值。此外,当实例不再被使用时,ARC 释放实例所占用的内存,并让释放的内存能挪作他用。这确保了不再被使用的实例,不会一直占用内存空间。然而,当 ARC 收回和释放了正在被使用中的实例,该实例的属性和方法将不能再被访问和调用。实际上,如果你试图转载 2017-02-23 13:49:16 · 434 阅读 · 0 评论 -
iOS日期选择器
LWTDatePickerView简洁的日期选择器 oc版本创建 LWTDatePickerView *pickerView = [[LWTDatePickerView alloc] initWithPickerViewWithCenterTitle:@"选择期限" LimitMaxIndex:50];滚动到特定日期 [pickerView pickerViewDidSelectRow原创 2017-03-02 16:24:39 · 518 阅读 · 0 评论 -
swift学习笔记(12)- 继承
定义一个基类不继承于其它类的类,称之为基类。 注意 Swift 中的类并不是从一个通用的基类继承而来。如果你不为你定义的类指定一个超类的话,这个类就自动成为基类。class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \(currentSpe转载 2017-02-22 11:46:52 · 258 阅读 · 0 评论 -
swift学习笔记(6)-函数
函数函数的定义与调用当你定义一个函数时,你可以定义一个或多个有名字和类型的值,作为函数的输入,称为参数,也可以定义某种类型的值作为函数执行结束时的输出,称为返回类型。每个函数有个函数名,用来描述函数执行的任务。要使用一个函数时,用函数名来“调用”这个函数,并传给它匹配的输入值(称作 实参 )。函数的实参必须与函数参数表里参数的顺序一致。func greet(person: String) -> St转载 2017-02-16 18:29:10 · 279 阅读 · 0 评论 -
swift学习笔记(1)-基础语法
swift变量、常量声明转载 2017-02-09 17:24:02 · 285 阅读 · 0 评论 -
swift学习笔记(2)-基本运算符
switf学习日记 基本运算符转载 2017-02-10 10:04:06 · 434 阅读 · 0 评论 -
swift学习笔记(4)-集合类型
Swift 语言提供Arrays、Sets和Dictionaries三种基本的集合类型用来存储集合数据。数组(Arrays)是有序数据的集。集合(Sets)是无序无重复数据的集。字典(Dictionaries)是无序的键值对的集。数组创建一个空数组我们可以使用构造语法来创建一个由特定数据类型构成的空数组:var someInts = [Int]()print("someInts is of typ转载 2017-02-13 14:23:40 · 754 阅读 · 0 评论 -
swift学习笔记(7)-闭包
闭包表达式闭包表达式是一种利用简洁语法构建内联闭包的方式。sorted 方法Swift 标准库提供了名为 sorted(by:) 的方法,它会根据你所提供的用于排序的闭包函数将已知类型数组中的值进行排序。一旦排序完成,sorted(by:) 方法会返回一个与原数组大小相同,包含同类型元素且元素已正确排序的新数组。原数组不会被 sorted(by:) 方法修改。let names = ["Chris"转载 2017-02-20 14:59:07 · 390 阅读 · 0 评论 -
swift学习笔记(8)-枚举
枚举语法使用enum关键词来创建枚举并且把它们的整个定义放在一对大括号内:enum SomeEnumeration { // 枚举定义放在这里 } 下面是用枚举表示指南针四个方向的例子:enum CompassPoint { case north case south case east case west } 枚举中定义的值(如 north转载 2017-02-20 15:01:32 · 384 阅读 · 0 评论 -
swift学习笔记(9)-结构体和类
结构体和类对比Swift 中类和结构体有很多共同点。共同处在于: * 定义属性用于存储值 * 定义方法用于提供功能 * 定义下标操作使得可以通过下标语法来访问实例所包含的值 * 定义构造器用于生成初始化值 * 通过扩展以增加默认实现的功能 * 实现协议以提供某种标准功能与结构体相比,类还有如下的附加功能: * 继承允许一个类继承另一个类的特征 * 类型转换允许在运行时检查和解释一个类转载 2017-02-20 16:36:06 · 660 阅读 · 0 评论 -
swift学习笔记(10)-属性
存储属性简单来说,一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。存储属性可以是变量存储属性(用关键字 var 定义),也可以是常量存储属性(用关键字 let 定义)。可以在定义存储属性的时候指定默认值,请参考默认构造器一节。也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值,请参考构造过程中常量属性的修改一节。下面的例子定义了一个名为 FixedLengthRange转载 2017-02-20 18:21:48 · 292 阅读 · 0 评论 -
swift学习笔记(5)-控制流
For-In 循环for index in 1...5 { print("\(index) times 5 is \(index * 5)")}// 1 times 5 is 5// 2 times 5 is 10// 3 times 5 is 15// 4 times 5 is 20// 5 times 5 is 25如果你不需要区间序列内每一项的值,你可以使用下划线(_)替代转载 2017-02-13 15:44:34 · 344 阅读 · 0 评论 -
swift学习笔记(11)- 下标
下标下标可以定义在类、结构体和枚举中,是访问集合,列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。举例来说,用下标访问一个Array实例中的元素可以写作someArray[index],访问Dictionary实例中的元素可以写作someDictionary[key]。一个类型可以定义多个下标,通过不同索引类型进行重载。下标不限于一维,你可以定义具有多个入转载 2017-02-22 10:21:12 · 402 阅读 · 0 评论 -
Swift与OC的区别
在Swift刚出来时就学习过,之后也一直没有用Swift写过项目,很快就忘记了,最近又花了点时间过了一遍官方的学习文档。Swift与OC的差异基础语法声明使用let和var关键字,Swift可以推出出类型,let声明的常量不可修改,var声明变量。Swift对数据要求严格,不存在隐式转换,强制转换格式:int(a)使用整数类型的 min 和 max 属性来获取对应类型的最小值和最大值BOOL原创 2017-06-13 16:06:32 · 1403 阅读 · 0 评论