为什么tableView方法被命名为?

时间:2016-03-11 23:16:40

标签: ios swift

除非我误解了这种语言(我刚开始学习swift),是什么原因指出所有方法相同并使用(外部)参数来识别它?我认为这可能是协议/代表的惯例。

我能想到的唯一原因是让代码更容易阅读,但即便如此,当我看到它时感觉也不对。

public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

@available(iOS 2.0, *)
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

@available(iOS 2.0, *)
optional public func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not implemented

(最后一个看起来正常/我期望它如何)

1 个答案:

答案 0 :(得分:1)

正如评论所指出的那样,它部分是历史性的,在Objective-C中有很多意义,其中实际的方法名称为

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

- tableView:cellForRowAtIndexPath:

使用swift,语言设计者选择使用命名参数来保持代码中函数的可读性,使Objective-C代码易于理解。

此外,命名参数是一个安全功能:如果命名参数并且它们的名称明显可用,则更不可能切换功能参数(特别是相同类型)。

考虑到这一点,在函数名中复制命名参数似乎是不必要的,此时框架的功能大大地从Objective-C桥接,与它们的Obj-C版本类似。

否则(这是历史部分)对现有开发人员来说很难,强迫他们使用新的命名方案,并可能使他们不能使用swift。