Swift基础回顾

2018年5月2日23:13:27更新:这篇之前在iOS文集中,现在移动到Swift中来,swift其实很简单,但是基础的东西必须要掌握牢固,高阶函数什么的也要慢慢习惯去用,后续会更新一些Swift3.0中的语言特性(4.0后续会补上)
一句话,coding如同逆水行舟,不进则退

工作需要,在oc项目中集成了一个swift的界面,现在需要在swift里面增加部分功能,回顾一下以前丢掉的部分swift知识,重新巩固一下.

说一下我认为比较重要的几点,有些是oc没有的,有些是oc进行了一些变化的:

1.元组

Swift基础回顾_第1张图片

tuple是元组,用()定义,可以存放不同类型的数据,可以给数据起别名,然后用点语法取值或者复制(let定义为常量,只能赋值一次)

2.可选类型

一般定义定义不能赋值为null,nil,因为swift强类型,nil也是一种类型,是这个类型就不能被其他类型赋值
在类型后面添加?,可以赋值为nil


Swift基础回顾_第2张图片

取值可以用强制解包


Swift基础回顾_第3张图片

强制解包如果该属性是nil的话直接崩溃,非常危险,所以一般用可选绑定

Swift基础回顾_第4张图片

初学,暂时没有找到更好的方法去解包取值,后续如果有的话会更新

3.函数

函数标准形式
public func 函数名(参数,例如 name:String) -> 返回值 {

}


Swift基础回顾_第5张图片

如果返回值为空可以胜率->返回值

4.类属性

类的创建可以继承NSObject也可以不继承
属性有存储属性和计算属性


Swift基础回顾_第6张图片

name 为存储属性,namecal为计算属性,性质跟java差不多

name as? String 这样转换的类型是一个可选类型
name as! String 这样转换的类型是一个确定类型(有风险)

5._ 的某一种用法

当函数(或者方法)的參数具有默认值时,Swift自己主动为该參数提供与參数名一致的默认外部參数名,因此在进行函数调用的时候,要提供默认參数名。能够使用下划线进行忽略默认外部參数名(可是不推荐忽略外部參数名。这主要是为了调用的时候能够方便地知道每一个參数的含义)。
简而言之就是不提供参数名,直接传值!

Swift基础回顾_第7张图片
看到区别了吧!

6.属性监听器

这个用来替代set方法的,比如cell的model赋值


Swift基础回顾_第8张图片

7.闭包

这东西跟block挺像的,但是还是有部分区别,因为block没有回调中再回调,但是闭包可以
首先是正常的定义:


Swift基础回顾_第9张图片

闭包回调回去是在前面的参数传进去的
这个是有返回值的情况


Swift基础回顾_第10张图片

如果想让闭包异步调用,可以在闭包定义前添加@escaping
@escaping callBack:(Int)->String
有一点要注意,我上面的例子,因为闭包是函数的最后一个参数,所以可以省略参数名,其他情况下不可以省略

Swift基础回顾_第11张图片
解决循环引用闭包问题
Swift基础回顾_第12张图片
第二种推荐使用

如果将weak 改为unowned的话不需要声明self为可选类型,可以直接使用self,但是比较危险,推荐使用weak self 然后用可选类型使用self

你可能感兴趣的:(Swift基础回顾)