【问题标题】:Method names in SwiftSwift 中的方法名称
【发布时间】:2015-06-09 21:54:31
【问题描述】:

在 Objective-C 中,我们有像 application:didFinishLaunchingWithOptions: 这样的方法名称,但在 Swift 中,相同作业的方法看起来不同。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    return true
}

这个方法的名称只是application,因为其他一切都只是参数吗?还是叫application didFinishLaunchingWithOptions,名称中有空格? 我在 Apple 文档中寻找官方答案,但找不到。

【问题讨论】:

  • 使用"application:"

标签: objective-c swift methods


【解决方案1】:

该方法确实被称为application,但是didFinishLaunchingWithOptions是一个外部参数名称并且:

如果您为参数提供外部参数名称,则在调用函数时必须始终使用该外部名称。

由于可以有两个名为application 的函数具有不同的外部参数名称,因此我们在引用函数时总是必须指定外部参数。所以,函数/方法的全名是

application(_:didFinishLaunchingWithOptions:)

你说得对,目前还没有任何关于引用 Swift 函数的约定。现在引用函数最安全的方法是使用 Obj-C 约定。

application:didFinishLaunchingWithOptions:

在所有 Apple 文档链接中仍然使用它。

整个 Apple 文档都使用此约定。

【讨论】:

  • 这是最好的答案,涵盖了所有关注点和有趣的点(除了文档确实通过 Objective-C 版本明确引用它们):i.imgur.com/QVcdcRB.png(顶部有一个小框文档来选择“Objective-C”、“Swift”或“Both”。如果你把它放在 Swift 上,Swift 风格会像这样显示。
【解决方案2】:

这个方法确实“恰到好处”application
Swift 更经常使用它,如果你有一个 tableview 例如几乎所有函数都以 tableview 开头

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {}

参数“定义”函数而不是方法。

【讨论】:

    【解决方案3】:

    你是什么意思,它在文档中的名称?它是application(_:didFinishLaunchingWithOptions:) 我无法想象你需要手动调用它的情况,但以防万一:

        application(app, didFinishLaunchingWithOptions:aDictionary) 
    

    【讨论】:

      【解决方案4】:

      两种语言的命名完全相同。

      如果您想要一个好的证明,请尝试在选择器中使用任何其他命名。

      【讨论】:

      • 虽然这个答案提出了一个很好的观点,但它肯定可以更好地解释它的观点。
      猜你喜欢
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多