必备知识架构-①语言Swift

[Toc]

一、iOS开发中使用OC和swift的对比

1
2
3
1.import的类
OC:某个只要要使用某个类就要将该类import。
swift:如果是用户自己创建类,其他类无需import可以直接使用。pod的一些三方类和系统的一些类,在使用的时候需要import

Guard语句的语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
guard expression else { 
//语句
//必须包含一个控制语句:return,break,continue或throw。
}
这里,expression是一个布尔表达式(返回true或者false)。
如果对表达式求值falseguard则执行代码块内的语句。
如果对表达式求值trueguard则从执行中跳过代码块内的语句

func someFunction() {
guard false else {
print("Condition not met")
return
}
print("Condition met")
}

二、【iOS】Swift和OC协议的区别?为何Swift是面向协议的?

【iOS】Swift和OC协议的区别?为何Swift是面向协议的?

相比于OC,Swift 可以做到协议方法的具体实现,而 OC 则不行。

OC中协议(Protocol)类似一个类的接口,只声明,不实现。
只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做不关心。具体的实现要在遵守这个协议的类中实现。

OC的Protocol与继承的区别

继承连同方法的实现也继承了,而protocol只有声明没有实现;
protocol能够作用到不同类型的类上。

OC的Protocol与Category的区别

Category可以给一个类扩充方法,既有申明也有实现;而Protocol只有声明,没有实现。
同:CategoryProtocol都可以声明方法,不能声明属性。

Swift 面试题解

?? 的作用

可选值的默认值, 当可选值为nil 的时候, 会返回后面的值. 如
let someValue = optional1 ?? 0