我是iOS和Swift的新手。我在理解Delegates中使用的Protocol方法中使用的语法时遇到了问题。例如,UIPickerView中使用以下两种方法:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return count
}
第一种方法很好,但第二种方法的语法让我困惑。第二个参数的格式令人困惑,据我所知,这应该是一个名为“组件”的Int,那么为什么动作名称“numberOfRowsInComponent”在它之前呢?
为什么委托方法都被称为“pickerView”,它们都只是重载吗?
任何指导都将不胜感激。
答案 0 :(得分:2)
完整的方法名称为text
,但pickerView:numberOfRowsInComponent
是实际包含传递值的参数名称
有时在调用函数时命名每个参数是有用的,以指示传递给函数的每个参数的用途。
如果希望函数用户在调用函数时提供参数名称,请为本地参数名称定义每个参数的外部参数名称。您在它支持的本地参数名称之前写入外部参数名称,用空格分隔:
component
答案 1 :(得分:1)
numberOfRowsInComponent component
名字是外部名称,但第二名是内部名称。调用方法时会使用numberOfRowsInComponent
,但在方法实现中会使用component
。
同样为什么委托方法都被称为“pickerView”,是它们 一切只是超载?
它们不是完全重载,因为它们具有不同的签名名称。例如
pickerView:numberOfRowsInComponent:
pickerView:widthForComponent:
// etc
只有方法签名匹配,但是参数计数或类型不同时才是方法过载。