- class 和 struct 的区别
- 不经过继承,代码复用(共享)的方式有哪些
- Set 独有的方法有哪些?
- 实现一个 min 函数,返回两个元素较小的元素
- map、filter、reduce 的做用
- map 与 flatmap 的区别
- 什么是 copy on write
- 如何获取当前代码的函数名和行号
- 如何声明一个只能被类 conform 的 protocol
- guard 使用场景
- defer 使用场景
- String 与 NSString 的关系与区别
- 怎么获取一个 String 的长度
- 如何截取 String 的某段字符串
- throws 和 rethrows 的用法与做用
- try? 和 try!是什么意思
- associatedtype 的做用
- 何时使用 final
- public 和 open 的区别
- 声明一个只有一个参数没有返回值闭包的别名
- Self 的使用场景
- dynamic 的做用
- 何时使用 @objc
- Optional(可选型) 是用什么实现的
- 如何自定义下标获取
- ?? 的做用
- lazy 的做用
- 一个类型表示选项,能够同时表示有几个选项选中(相似 UIViewAnimationOptions ),用什么类型表示
- inout 的做用
- Error 若是要兼容 NSError 须要作什么操做
- 下面的代码都用了哪些语法糖
[1, 2, 3].map{ $0 * 2 }复制代码
- 什么是高阶函数
- 如何解决引用循环
- 下面的代码会不会崩溃,说出缘由
var mutableArray = [1,2,3]
for _ in mutableArray {
mutableArray.removeLast()
}复制代码
- 给集合中元素是字符串的类型增长一个扩展方法,应该怎么声明
- dynamic framework 和 static framework 的区别是什么
高级
- 一个 Sequence 的索引是否是必定从 0 开始?
- 数组都实现了哪些协议
- 如何自定义模式匹配
- autoclosure 的做用
- 编译选项 whole module optmization 优化了什么
下面代码中 mutating 的做用是什么swift
struct Person {
var name: String {
mutating get {
return store
}
}
}复制代码
- 如何让自定义对象支持字面量初始化