IOS面试题——Swift方法、闭包(4)

一 面试题汇总

  1. 实例方法和类方法有什么区别?
  2. 值类型的属性想要被自身的实例方法修改,怎么实现?mutating
  3. 什么是闭包?闭包表达式是怎么样的?
  4. 闭包作为参数时的缩写?什么是尾随闭包?
  5. @autoclosure是什么?有什么作用?
  6. Swift函数定义,函数重载,函数类型

二 面试题解答(仅供参考)

2.1 实例方法和类方法有什么区别?

1
2
实例方法:与实例绑定,访问实例属性。
类方法:与类型绑定,不能访问实例属性,使用 static 或 class 声明。

2.2 值类型的属性想要被自身的实例方法修改,怎么实现?mutating

1
mutating 关键字使得结构体的实例方法能够修改实例的属性。

2.3 什么是闭包?闭包表达式是怎么样的?

1
2
3
闭包是一个可以捕获并存储其上下文中常量和变量的自包含代码块。
闭包表达式提供了定义闭包的简洁语法,支持自动推断类型和简化参数名称。
闭包常用于回调和异步操作中。

2.4 闭包作为参数时的缩写?什么是尾随闭包?

1
2
闭包作为参数时的缩写:自动推断参数类型,使用 $0, $1 等简化参数名称。
尾随闭包:当闭包是函数的最后一个参数时,可以将闭包写在函数调用的外面,简化代码并提高可读性。

2.5 @autoclosure是什么?有什么作用?

1
2
3
@autoclosure 是 Swift 中的一个属性包装器,
它将一个表达式自动转换为一个闭包,简化了代码书写,并延迟了表达式的计算。
它主要用于函数参数是闭包的场景,方便传递表达式而不需要显式地创建闭包。

2.6 Swift函数定义,函数重载,函数类型

1
2
3
函数定义:使用 func 关键字,定义函数名、参数和返回值。
函数重载:可以定义多个相同名字但参数不同的函数,依据参数的类型、数量或顺序来区分。
函数类型:函数有自己的类型,可以作为参数传递给其他函数,或者作为函数的返回值。

三 参考

  • 简书—swift方法、闭包