1.swift特色
- swift取消了预编译指令包括宏
- 提供了类似Java的命名空间,泛型,运算对象重载
- 对foundation框架做了重载,将其绝大部分class转换为struct
- swift是弱语言,不会对类型做隐式转换,不同类型之间不能直接运算,需要手动转换
- 变量和常量类型不给定,会根据赋值情况自动推导
- 不存在基本的数据类型,Int,Double,CGFloat等都是结构体
2.资源
- 官方网站: https://swift.org
- 官方swift 4 电子书
3.差异
- 访问当前属性不用谢self. 闭包中访问需要使用self.
- 基本不用;分割语句
- 枚举类型不用写全名,直接.类型(UIButtonTypeContactAdd —> .contactAdd)
- target - action的变化: @selector(buttonClick:) –> #selector(buttonClick(_ :))
- 标记提示: //MARK: //TODO: //FIXME: //
- if条件语句可以不适用()
4.可选项optional
let x: Optional = 10
let x: Int? = 10
print(x) 结果都是 optional(10)
- 可选项不能直接参与计算
- optional可能有值,可能没值
- !可以进行强行解包,没有值得时候,强行解包是出错的
5.可选项处理if let和guard let和??
let name:String?
let age:Int?
//方法1: 可以连续判断
// if var 连用可以修改{变量的值,新变量的作用域仅仅在{}内起作用}
if let name = name, let age = age {
print(name + String(age))
}
//方法2: 可以连续判断
guard let name = name, let age = age else {
return}
print(name + String(age))
//方法3
print(name ?? "" + String(age))
函数调用