为什么 "protocol UITableViewDelegate" 和 swift 语言有这么多同名函数?
Why so many functions with same name in "protocol UITableViewDelegate" with swift language?
swift 语言能否在协议或 class 中允许许多具有相同名称的函数?对不起。谢谢
协议 UITableViewDelegate : NSObjectProtocol, UIScrollViewDelegate {
// Display customization
optional func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, didEndDisplayingHeaderView view: UIView, forSection section: Int)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, didEndDisplayingFooterView view: UIView, forSection section: Int)
// Variable height support
optional func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
optional func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
optional func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
这是可能的,因为Swift支持函数重载。您会注意到,尽管这些方法中的每一个都具有相同的名称,但它们接受不同的命名参数。
您可以在自己的代码中利用这一点来提供一致的 API 以支持多种类型。我最近使用此功能扩展 class 的下标运算符以接受我自己的枚举类型,而不仅仅是接受字符串。
就 UITableViewDelegate 而言,它与它的 Objective-C 对应物本质上是相同的,因为 Apple 不想重写 Swift 的所有内容。如果他们为 Swift.
从头开始写这个, API 很可能会有所不同
swift 语言能否在协议或 class 中允许许多具有相同名称的函数?对不起。谢谢
协议 UITableViewDelegate : NSObjectProtocol, UIScrollViewDelegate {
// Display customization
optional func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, didEndDisplayingHeaderView view: UIView, forSection section: Int)
@availability(iOS, introduced=6.0)
optional func tableView(tableView: UITableView, didEndDisplayingFooterView view: UIView, forSection section: Int)
// Variable height support
optional func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
optional func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
optional func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
这是可能的,因为Swift支持函数重载。您会注意到,尽管这些方法中的每一个都具有相同的名称,但它们接受不同的命名参数。
您可以在自己的代码中利用这一点来提供一致的 API 以支持多种类型。我最近使用此功能扩展 class 的下标运算符以接受我自己的枚举类型,而不仅仅是接受字符串。
就 UITableViewDelegate 而言,它与它的 Objective-C 对应物本质上是相同的,因为 Apple 不想重写 Swift 的所有内容。如果他们为 Swift.
从头开始写这个, API 很可能会有所不同