Swift 的关键字和符号

1,Swift--Any和AnyObject的区别

AnyObject:可以代表任何class类型的实例;
Any:可以代表任何类型,甚至包括方法(func)类型。

2,? 代表可选类型

格式 :var 变量名: 变量类型? = 初始值
可选类型表示:
有值,等于 x
或者
没有值

var serverResponseCode: Int? = 404

3,!强制解析

当确定可选类型有值的时候,进行类型的解析。使用 ! 来获取一个不存在的可选值会导致运行时错误。使用 ! 来强制解析值之前,一定要确定可选包含一个非 nil 的值。

serverResponseCode!

4,可选绑定

使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含这个值会自动强制解析并赋给一个临时常量或者变量。可选绑定可以用在 if 和 while 语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。

if let actualNumber = Int(possibleNumber) 

5,隐式解析可选类型

第一次被赋值之后,可以确定一个可选类型总会有值。可以把隐式解析可选类型当做一个可以自动解析的可选类型。你要做的只是声明的时候把感叹号放到类型的结尾,而不是每次取值的可选名字的结尾。

let assumedString: String! = "An implicitly unwrapped optional string."

6,空合运算符??

空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。

7,忽略参数标签_

每个函数参数都有一个参数标签( argument label )以及一个参数名称( parameter name )。参数标签在调用函数的时候使用;调用的时候需要将函数的参数标签写在对应的参数前面。参数名称在函数的实现中使用。默认情况下,函数参数使用参数名称来作为它们的参数标签。

func someFunction(firstParameterName: Int, secondParameterName: Int) {
    // 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数值
}
someFunction(firstParameterName: 1, secondParameterName: 2)
func someFunction(argumentLabel parameterName: Int) {
    // 在函数体内,parameterName 代表参数值
}

如果你不希望为某个参数添加一个标签,可以使用一个下划线(_)来代替一个明确的参数标签。

func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
     // 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数值
}
someFunction(1, secondParameterName: 2)

8,@objc,#selector

参考https://www.jianshu.com/p/a62cca62e4ee,https://www.jianshu.com/p/a56776a578fe
因为函数选取是在Obj-C名字空间里做,所以需要用@objc修饰需要暴露给Obj-C的函数。
Swift 中的 Selector 就是 Objective-C 中的 SEL, 在 SWift 中重新封装成结构体, 并扩展了一些方法。也同样提供了使用字符串的进行初始化。语法糖 #selector,允许使用编辑器的自动补全功能,杜绝了直接使用字符串导致错误的可能,同时还会检查当前的方法是否支持动态派发。

9,swift 中 as as! as? 的区别

参考https://blog.csdn.net/binglan520/article/details/54631223
用于类型转换,确定可以转换用!,不确定用?

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