ios - 为什么 tableView 方法按原样命名?

标签 ios swift

<分区>


想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它.

已关闭 7 年前

除非我误解了该语言(我刚刚开始学习 swift),否则将所有方法命名为相同并使用(外部)参数来标识它的原因是什么?我认为这可能是协议(protocol)/委托(delegate)的约定。

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

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

(最后一个看起来很正常/我期望的样子)

最佳答案

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

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

- tableView:cellForRowAtIndexPath:

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

此外,命名参数是一项安全功能:如果函数参数已命名并且它们的名称使它们的用途显而易见,那么您就不太可能切换函数参数(尤其是相同类型的参数)。

考虑到这一点,在函数名称中复制命名参数似乎是不必要的,并且此时从 Objective-C 大量桥接的框架函数与它们的 Obj-C 版本保持相似。

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

关于ios - 为什么 tableView 方法按原样命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951612/

上一篇:ios - AnyObject bool 转换为 int

下一篇:iOS RubyMotion 推广网页卡住

相关文章:

ios - 使用 iPhone 7 和 UIFeedbackGenerator,哪些系统操作执行哪种触觉反馈?

ios - 使用SK3DNode在SpriteKit中显示SceneKit粒子对象

swift - 在 ARKit 中交换 3D 模型的节点

ios - SKScene 和内存问题

iphone - UITableView - 如何左对齐?

ios - 如何在 IOS Swift OpenglES 1.0/1.1/2.0 上将文本和图像绘制为纹理

android - 有没有办法在 iOS 和 Android 设备中设置 Web 套接字服务器(不是客户端)?

ios - 从圆形或 donut 中绘制线段

ios - Swift 无法将类型 'CGPath' 的值分配给类型 'CGPath?' 的值

swift - 将数据保存到数组中[Swift]