没有完全理解自定义协议的概念,Swift 3
Not fully getting the concept of custom protocols, Swift 3
对于提出这样一个愚蠢的问题,我深表歉意,但我并没有从其他答案中得到我想知道的东西。
这是 Ray Wenderlich iOS 课程
中自定义委托协议的示例代码
protocol AddItemViewControllerDelegate: class {
func addItemViewControllerDidCancel(_ controller: AddItemViewController)
func addItemViewController(_ controller: AddItemViewController,
didFinishAdding item: ChecklistItem) }
虽然协议的定义很明确,但它是一种必须遵守才能使用的契约。但是这里是在符合class
的主体中实现协议的功能
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 的外部名称。
但是它是如何工作的,如何从名为 AddItemViewController 的控制器将 ChecklistItem 发送到符合要求的委托的协议主体中理解,或者它是一些预定义的函数类型?
这里我们讨论Swift代码风格约定。
didFinishAdding
是一个参数描述,这使得调用者更清楚地理解它应该是什么。当然,你看到第二个参数的类型是ChecklistItem
,但是为了让开发者不被混淆,你做了这个简短的解释,究竟应该将哪一项传递给函数。
在你的例子中 controller
我猜没有使用参数,因为在这个特定的实现中不需要它。然而,这是代表的一般风格:你说 谁 做了这个动作,什么 是它的主题。在某些情况下,您可能需要知道 AddItemViewController
添加了什么内容。
didFinishAdding 只是帮助您更好地理解函数的签名。
在您的示例中,未使用 "controller",但仅在本例中使用。如果签名中有 属性,则不会强制您使用它:)
对于提出这样一个愚蠢的问题,我深表歉意,但我并没有从其他答案中得到我想知道的东西。 这是 Ray Wenderlich iOS 课程
中自定义委托协议的示例代码protocol AddItemViewControllerDelegate: class {
func addItemViewControllerDidCancel(_ controller: AddItemViewController)
func addItemViewController(_ controller: AddItemViewController,
didFinishAdding item: ChecklistItem) }
虽然协议的定义很明确,但它是一种必须遵守才能使用的契约。但是这里是在符合class
的主体中实现协议的功能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 的外部名称。 但是它是如何工作的,如何从名为 AddItemViewController 的控制器将 ChecklistItem 发送到符合要求的委托的协议主体中理解,或者它是一些预定义的函数类型?
这里我们讨论Swift代码风格约定。
didFinishAdding
是一个参数描述,这使得调用者更清楚地理解它应该是什么。当然,你看到第二个参数的类型是ChecklistItem
,但是为了让开发者不被混淆,你做了这个简短的解释,究竟应该将哪一项传递给函数。
在你的例子中 controller
我猜没有使用参数,因为在这个特定的实现中不需要它。然而,这是代表的一般风格:你说 谁 做了这个动作,什么 是它的主题。在某些情况下,您可能需要知道 AddItemViewController
添加了什么内容。
didFinishAdding 只是帮助您更好地理解函数的签名。
在您的示例中,未使用 "controller",但仅在本例中使用。如果签名中有 属性,则不会强制您使用它:)