Swift 被设计为与 Objective-C 兼容。毕竟,几乎所有现有的 OS X 和 iOS API 都是用 Objective-C 和 C 编写的(到处都有一些 C++ 代码)。 Swift 需要能够使用这些 API,从而以某种方式支持大多数 Objective-C 功能。 Objective-C 最重要的特性之一是方法调用的方式。
例如,在 C 中,具有 3 个参数的函数的调用方式如下:
foo(1, "bar", 3);
你不知道争论应该是什么。因此,在 Objective-C 中,参数与方法名称交错排列。例如,方法的名称可能是fooWithNumber:someString:anotherNumber:
它会被称为:
[anObject fooWithNumber:1 someString:@"bar" anotherNumber:3];
Swift 现在尝试与这个 Objective-C 功能兼容。因此它支持一种命名参数的形式。 Swift 中的调用如下所示:
anObject.foo(number:1, someString:@"bar", anotherNumber:3)
通常,编写 Swift 方法定义时,您无需显式命名第一个参数,例如:
anObject.foo(1, someString:@"bar", anotherNumber:3)
如果你查找UITableViewDelegate 协议文档 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/index.html然后选择 Objective-C 你可以看到所有这些方法都以tableView:
指定发件人,但从那时起它们就大不相同了。您引用的列表是从 Objective-C 命名约定转换为 Swift 命名约定的结果。