title: Swift 小知识
date: 2019-02-27 10:42:55
tags:
- Swift
categories: - iOS
class
修饰的 func 可以被重写,static
不可以- protocol 中要求实现的方法必须保证访问控制修饰符也要正确,尤其是对于可选实现的方法,如果修饰符不对就会被当做没有实现
- 如果调用
Error
的localizedDescription
方法跟你重写的内容不一样,那你八成是没有让你的Error
实现LocalizedError
协议 - 什么是尾递归
//这个不是 function factorial(n) { if (n === 1) return 1; return n * factorial(n - 1); } //这个才是 function factorial(n, total) { if (n === 1) return total; return factorial(n - 1, n * total); }
自己品,细品
@autoclosure
使用场景func useBifAisTrue(a: bool, b: Int) { //... guard a else { return } let r = b + 100 //... } func getB() -> Int { //... 非常耗时的操作 return x } userBifAisTrue(a: false, b: getB()) //直接调用上边的方法会先执行getB方法,如果a是false的话,b根本用不到,但是它已经执行了,及其浪费资源 //用自动闭包就可以延迟getB的执行了 func useBifAisTrue(a: bool, @autoclosure b: Int) { //... guard a else { return } let r = b() + 100 //... }