创建UITableViewController
时,有时我只需要函数中的indexPath
,使用_
忽略时是否有性能改进tableView
参数?
例如:使用这个:
override func tableView(_: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
而不是这个:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
最佳答案
通常,这属于“微优化”类别。 即使有差异,也可能是可以忽略不计的 与程序的其余部分相比。并且很有可能 编译器注意到未使用的参数并优化代码 因此。您应该决定哪个参数名称最有效 感觉你的情况。
在这种特殊情况下,它根本没有任何区别。 如何命名(内部)方法参数仅影响编译 阶段,但不会更改生成的代码。
您可以轻松验证这一点 你自己。创建源文件“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
关于swift - 在 Swift 中使用 _ 忽略参数是否会提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129226/