Home

Swift协议

关键词:Swift, iOS, 协议, protocol, @objc 概述 协议可以要求遵循协议的类型提供特定名称和类型的实例属性或类型属性。 协议只指定属性的名称和类型,不指定属性是存储属性还是计算属性。 协议可以指定属性是只读的还是可读可写的。 协议可以被继承。 协议可以扩展,并提供默认实现。 指定属性的读写性 只读:在属性类型后面添加{get} 可读可写:在属性类型后面添加{set get} 协议作为类型的使用场景 协议也是一种类型,可以像其他普通类型一样使用,使用场景: 作为函数、方法或构造器中的参数类型或返回值类型 作为常量、变量或属性的类型 作为数组、字典或其他容器中的元素类型 示例 定义协议 pr...

Read more

Swift扩展

关键词:Swift, iOS, 扩展 概述 可以给一个现有的类,结构体,枚举,协议添加新功能。 不能重写已经存在的功能。 与OC的分类非常相似,只是Swift的扩展没有名字。 Swift 中的扩展可以: 添加计算型实例属性和计算型类属性 定义实例方法和类方法 提供新的构造器 定义下标 定义和使用新的嵌套类型 使已经存在的类型遵循一个协议 使用方法 扩展的声明: extension SomeType { // 在这里给 SomeType 添加新的功能 } 扩充一个现有的类型,并给它添加一个或多个协议: extension SomeType: SomeProtocol, AnotherProtocol { // 协议...

Read more

Swift错误处理

关键词:Swift, iOS, 错误处理, 断言, 先决条件, throw, Error, do-try-cath, try-cath, assert, precondition, defer 概述 throw表示一个可能会抛出异常的函数。 标有 throws 关键字的函数被称作 throwing 函数。 如果这个函数有返回值,throws需要写在 -> 前面。 无返回值:func simpleFunc() throws {//something} 有返回值:func simpleFunc(index: Int) throws -> Int {//something} 只有 throwing 函数可以...

Read more

Swift类型转换

关键词:Swift, iOS, is, as, as?, , Any, AnyObject 数据类型转换 SomeType(ofInitialValue) 数据类型(待转换的数据) 并不能传入任意类型的值,只能传入目标类型内部有对应构造器的值。 布尔型不能转成整型或浮点型。 不同整型(如UInt8与UInt16)不能直接相加,需要先转换为相同的类型。 UInt16(num1) Int(numFloat) String(numBool) 类型转换 概述 使用is与as进行类型判断,只能判断是否属于某个类;无法判断是否属于某个父类。 类型判断:is if things[0] is String { print("第一个元素是字符串") }...

Read more

Sourcetree报错 Failed to connect to 127.0.0.1 port 1086: Connection refused

关键词:sourcetree, 报错, Shadowsocks pull或push时报错 fatal: unable to access 'https://github.com/xxx/xxx.git/': Failed to connect to 127.0.0.1 port 1086: Connection refused 报错原因 设置了git全局代理,且Shadowsocks未打开。 解决方法 打开Shadowsocks,或关闭git全局代理。 关闭git全局代理的方法见:Git使用代理

Read more

Swift可选链

关键词:swift, 可选链 概述 当前可选值可能为nil。 当前可选值调用属性、方法、下标。 当前可选值有值则调用成功,如果为nil,则调用的结果也会返回nil。 多个调用可以连在一起形成一个调用链。 可选链返回的总是一个可选值。 即使是多层可选链调用,也不会返回“更可选”(如:Float??)的情况。 可选链,就是可选值调用属性、方法、下标,形成一个调用链。 示例 class FileClass { var name = "uuu" func showInfo() { print("这里打印点信息:\(self.name)") } subscript(width: Float, heig...

Read more

Swift析构器

关键词:swift, 析构器, deinit 概述 只适用于类类型。 每个类最多有一个析构器。 析构器在实例被释放前会自动调用,不能手动调用。 如果子类实现了析构器,在析构结束的时候,会自动调用父类的析构器。 即使子类没有实现析构器,父类的析构器也会自动调用。 不带任何参数,也不需要()。 其实Swift的析构跟OC基本没差别,Swift的deinit相当于OC的dealloc。 析构器示例 deinit { // 执行析构过程 }

Read more

Swift构造器

关键词:swift, 构造器, init, required 概述 类、结构体或枚举类型,使用实例前的准备过程。 可以自定义参数。 可以在构造器里给常量属性赋值。 可以在一个便利构造器里调用其他构造器。 默认情况下,子类不会继承父类的构造器。但是当子类没有实现任何构造器时,会自动继承父类的所有构造器。 与OC不一样的地方: swift的构造器没有返回值,它的作用是使实例在使用前完成正确的初始化。 swift的子类默认不会继承父类的构造器。 构造器在创建某个特定类型的新实例时被调用。以 init 命名。 //最简形式,一个无形参的实例方法。 init() { // 在此处执行构造过程 } 自定义构造过程 就是自定义init方...

Read more

Swift继承

关键词:swift, 继承, 重写, override, final, private 继承 概述 在Swift中继承是区别类与其他类型的基本特征。 类可以调用父类的方法、属性、下标,并可以重写这些。 基类不需要继承自任何类(OC中需要继承NSObject)。 基类示例 class FileClass { var name = "aa" var size = 11 func displayInfo() { print("名称:\(name) 大小:\(size)") } } 重写 重写方法 父类方法需要为非私有,即方法名前没有private修饰。 ///子类 class VoiceFileClass ...

Read more