2015-04-05 77 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