我提前为提出这样一个愚蠢的问题道歉,但我并没有从其他答案中得到我想知道的东西。这是来自 Ray Wenderlich iOS 课程的自定义委托协议的示例代码
protocol AddItemViewControllerDelegate: class {
func addItemViewControllerDidCancel(_ controller: AddItemViewController)
func addItemViewController(_ controller: AddItemViewController,
didFinishAdding item: ChecklistItem) }
尽管协议的定义很明确,但它是一种必须遵守才能使用的合同。但这里是协议的功能在符合类的主体中的实现
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)
}
并且没有实际使用控制器参数,didFinishAdding 是什么?据我了解, didFinishAdding 只是内部参数item的外部名称。但是它是如何工作的,如何从名为AddItemViewController的控制器将ChecklistItem发送给符合要求的委托的协议主体中理解它,或者它是某种预定义的函数类型?