iOS Swift委托语法

时间:2015-05-13 13:14:00

标签: ios swift delegates

我是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”,它们都只是重载吗?

任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:2)

完整的方法名称为text,但pickerView:numberOfRowsInComponent是实际包含传递值的参数名称

了解External Parameter Names

  

有时在调用函数时命名每个参数是有用的,以指示传递给函数的每个参数的用途。

     

如果希望函数用户在调用函数时提供参数名称,请为本地参数名称定义每个参数的外部参数名称。您在它支持的本地参数名称之前写入外部参数名称,用空格分隔:

component

答案 1 :(得分:1)

numberOfRowsInComponent component名字是外部名称,但第二名是内部名称。调用方法时会使用numberOfRowsInComponent,但在方法实现中会使用component

  

同样为什么委托方法都被称为“pickerView”,是它们   一切只是超载?

它们不是完全重载,因为它们具有不同的签名名称。例如

pickerView:numberOfRowsInComponent:
pickerView:widthForComponent:
// etc

只有方法签名匹配,但是参数计数或类型不同时才是方法过载。