创建UITableViewController
时,有时我只需要我的函数中的indexPath
,使用_
忽略tableView
参数时是否有性能提升?
Ex:使用此:
override func tableView(_: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
而不是:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
答案 0 :(得分:2)
通常,这属于“微优化”类别。 即使存在差异,也可能是微不足道的 与你的其他程序相比。并且机会很大 编译器注意到未使用的参数并优化代码 因此。您应该决定哪个参数名称最多 感觉你的情况。
在这种特殊情况下,它完全没有任何区别。 如何命名(内部)方法参数仅影响编译 阶段,但不会更改生成的代码。
您可以轻松验证 你自己。创建源文件“main.swift”:
// main.swift
import Swift
func foo(str : String) -> Int {
return 100
}
func bar(_ : String) -> Int {
return 100
}
println(foo("a"))
println(bar("b"))
现在编译它并检查生成的汇编代码:
swiftc -O -emit-assembly main.swift
两种方法的汇编代码完全相同:
.private_extern __TF4main3fooFSSSi .globl __TF4main3fooFSSSi .align 4, 0x90 __TF4main3fooFSSSi: pushq %rbp movq %rsp, %rbp movq %rdx, %rdi callq _swift_unknownRelease movl $100, %eax popq %rbp retq .private_extern __TF4main3barFSSSi .globl __TF4main3barFSSSi .align 4, 0x90 __TF4main3barFSSSi: pushq %rbp movq %rsp, %rbp movq %rdx, %rdi callq _swift_unknownRelease movl $100, %eax popq %rbp retq