Swift协议
关键词:Swift, iOS, 协议, protocol, @objc
概述
协议可以要求遵循协议的类型提供特定名称和类型的实例属性或类型属性。
协议只指定属性的名称和类型,不指定属性是存储属性还是计算属性。
协议可以指定属性是只读的还是可读可写的。
协议可以被继承。
协议可以扩展,并提供默认实现。
指定属性的读写性
只读:在属性类型后面添加{get}
可读可写:在属性类型后面添加{set get}
协议作为类型的使用场景
协议也是一种类型,可以像其他普通类型一样使用,使用场景:
作为函数、方法或构造器中的参数类型或返回值类型
作为常量、变量或属性的类型
作为数组、字典或其他容器中的元素类型
示例
定义协议
pr...
Swift扩展
关键词:Swift, iOS, 扩展
概述
可以给一个现有的类,结构体,枚举,协议添加新功能。
不能重写已经存在的功能。
与OC的分类非常相似,只是Swift的扩展没有名字。
Swift 中的扩展可以:
添加计算型实例属性和计算型类属性
定义实例方法和类方法
提供新的构造器
定义下标
定义和使用新的嵌套类型
使已经存在的类型遵循一个协议
使用方法
扩展的声明:
extension SomeType {
// 在这里给 SomeType 添加新的功能
}
扩充一个现有的类型,并给它添加一个或多个协议:
extension SomeType: SomeProtocol, AnotherProtocol {
// 协议...
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 函数可以...
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("第一个元素是字符串")
}...
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使用代理
Swift可选链
关键词:swift, 可选链
概述
当前可选值可能为nil。
当前可选值调用属性、方法、下标。
当前可选值有值则调用成功,如果为nil,则调用的结果也会返回nil。
多个调用可以连在一起形成一个调用链。
可选链返回的总是一个可选值。
即使是多层可选链调用,也不会返回“更可选”(如:Float??)的情况。
可选链,就是可选值调用属性、方法、下标,形成一个调用链。
示例
class FileClass {
var name = "uuu"
func showInfo() {
print("这里打印点信息:\(self.name)")
}
subscript(width: Float, heig...
Swift构造器
关键词:swift, 构造器, init, required
概述
类、结构体或枚举类型,使用实例前的准备过程。
可以自定义参数。
可以在构造器里给常量属性赋值。
可以在一个便利构造器里调用其他构造器。
默认情况下,子类不会继承父类的构造器。但是当子类没有实现任何构造器时,会自动继承父类的所有构造器。
与OC不一样的地方:
swift的构造器没有返回值,它的作用是使实例在使用前完成正确的初始化。
swift的子类默认不会继承父类的构造器。
构造器在创建某个特定类型的新实例时被调用。以 init 命名。
//最简形式,一个无形参的实例方法。
init() {
// 在此处执行构造过程
}
自定义构造过程
就是自定义init方...
Swift继承
关键词:swift, 继承, 重写, override, final, private
继承
概述
在Swift中继承是区别类与其他类型的基本特征。
类可以调用父类的方法、属性、下标,并可以重写这些。
基类不需要继承自任何类(OC中需要继承NSObject)。
基类示例
class FileClass {
var name = "aa"
var size = 11
func displayInfo() {
print("名称:\(name) 大小:\(size)")
}
}
重写
重写方法
父类方法需要为非私有,即方法名前没有private修饰。
///子类
class VoiceFileClass ...
109 post articles, 11 pages.