Swift 特殊关键字 与符号

#available()函数来检查API函数的可用性

// 判断当前版本是否 iOS8.0+,OSX10.10+以及以其他平台
if #available(iOS 8.0, OSX 10.10, *) {
     // 当版本匹配时
} 
else
 { 
     //当版本不匹配时 
}

也可以放在方法前面, 使其方法在某个版本可用
// iOS8.0+,OSX10.10+以及以其他平台可用
@available(iOS 8.0, OSX 10.10, *)  
func startUserActivity() -> NSUserActivity {  

}   

新的guard语法:这个新的语法允许你在一个代码周期中构建一个提前的退出点, 避免了大量的if 判断

如果 a >= b 就会进入else直接退出
guard a < b else { return }

optional

强制展开(!)

如果对一个nil的optional 的变量进行强制展开(就是加上!), 会出现运行时错误, 所以如果对变量进行强制展开必须要保证Optional的变量不为nil

使用问号(?)来替代原来的叹号(!

if optionalChaining.string?.characters.count > 0 {
            
}

只有optionalChaining.string不为nil的适合才能访问characters

required修饰符的使用规则

  1. required修饰符能用于修饰类初始化方法。
  2. 当子类含有异于父类的初始化方法时(初始化方法参数类型和数量异于父类),子类必须要实现父类的required初始化方法,并且也要使用required修饰符而不是override
  3. 当子类没有初始化方法时,可以不用实现父类的required初始化方法。
protocol SomeProtocol {
    init(someParameter: Int)
}
class SomeClass: SomeProtocol {
    required init(someParameter: Int) {
        // 这里是构造器的实现部分
    }
}

 

 mutating

修饰方法能修改同实例属性值

协议 方法前面加上mutating 表示遵守协议的结构体 / 枚举能修改同实例属性

结构体/ 枚举中 方法要修改同实例属性需要在方法前面加上mutating, 表示你可以修改同实例属性

enum OnOffSwitch: Togglable {
    case Off, On
    mutating func toggle() {
        switch self {
        case Off:
            self = On
        case On:
            self = Off
        }
    }
}
var lightSwitch = OnOffSwitch.Off
lightSwitch.toggle()
// lightSwitch 现在的值为 .On

// 声明一个类型

typealias type

 

你可能感兴趣的:(Swift 特殊关键字 与符号)