gpt4 book ai didi

swift - 没有完全理解自定义协议(protocol)的概念,Swift 3

转载 作者:行者123 更新时间:2023-11-30 12:43:16 26 4
gpt4 key购买 nike

我为问这样一个愚蠢的问题提前道歉,但我并没有从其他答案中得到我想知道的东西。以下是 Ray Wenderlich iOS 类(class)中的自定义委托(delegate)协议(protocol)示例代码

protocol AddItemViewControllerDelegate: class {
func addItemViewControllerDidCancel(_ controller: AddItemViewController)
func addItemViewController(_ controller: AddItemViewController,
didFinishAdding item: ChecklistItem) }

虽然协议(protocol)的定义很明确,但它是一种需要遵守才能使用的契约。但这里是在符合类的主体中实现协议(protocol)的功能

func addItemViewController(_ controller: AddItemViewController,
didFinishAdding item: ChecklistItem) {
let newRowIndex = items.count
items.append(item)
let indexPath = IndexPath(row: newRowIndex, section: 0)
let indexPaths = [indexPath]
tableView.insertRows(at: indexPaths, with: .automatic)
dismiss(animated: true, completion: nil)
}

并且没有实际使用controller参数,什么是didFinishAdding?据我了解,didFinishAdding 只是内部参数 item 的外部名称。但是它是如何工作的,如何从协议(protocol)正文中理解名为 AddItemViewController 的 Controller 将 ChecklistItem 发送到符合要求的委托(delegate),或者它是某种预定义的函数类型?

最佳答案

这里我们讨论 Swift 代码风格约定。

didFinishAdding 是一个参数描述,它使调用者更清楚地理解它应该是什么。当然,您看到第二个参数的类型是 ChecklistItem,但为了让开发人员不感到困惑,您做了这个简短的解释,到底应该将哪个项目传递给函数。

在您的示例中,我猜没有使用 controller 参数,因为在这个特定的实现中不需要它。然而,这是委托(delegate)的一般风格:你说做了这个 Action ,什么是它的主题。在某些情况下,您可能需要知道 AddItemViewController 添加了哪些项目。

关于swift - 没有完全理解自定义协议(protocol)的概念,Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com