2015-04-05 79 views
5

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

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

是此方法仅application,因为一切都只是参数的名字吗?或者它叫application didFinishLaunchingWithOptions,名字中有一个空格? 我在Apple文档中寻找正式答案,但找不到一个答案。

+0

use'“application:”' – duan 2015-04-05 10:10:45

回答

7

的方法确实被称为application,但是didFinishLaunchingWithOptions是外部参数名称和:

如果您为参数提供外部参数的名称,当你调用该函数外部名称必须始终使用。

由于可以与不同的外部参数名称叫application两个功能,一定要到指定的外部参数指的是功能时。因此,函数/方法的全名是

application(_:didFinishLaunchingWithOptions:) 

你是对还没有进行任何约定参照斯威夫特功能做呢。现在引用一个函数的最安全的方法是使用Obj-C约定。

application:didFinishLaunchingWithOptions: 

哪一个仍然在所有Apple文档链接中使用。

此惯例在整个Apple文档中使用。

+2

这是最好的答案,涵盖了所有关注点和有趣的观点(文档除了通过Objective-C版本明确指出它们之外):http://i.imgur.com/QVcdcRB.png(这里有一个小框选择“Objective-C”,“Swift”或“Both”的文档顶部。如果将它放在Swift上,Swift样式会显示为这样。 – nhgrif 2015-04-05 15:12:06

0

你是什么意思,它的名字在文档中?它是application(_:didFinishLaunchingWithOptions:),当你需要的情况下,手动,但只是把它我无法想象的情况:

application(app, didFinishLaunchingWithOptions:aDictionary) 
1

的方法确实是“公正” application
雨燕使用该更多的时候,如果你有例如tableview几乎所有的功能开始tableview

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

参数“定义”的功能,而不是方法。

0

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

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

+2

尽管这个答案很好,但它可以更好地解释它的观点。 – nhgrif 2015-04-05 15:15:51