2015-04-05 2 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 Documentation, но я не смог его найти.

+0

use '" application: "' – duan

ответ

7

Метода действительно называется application, однако didFinishLaunchingWithOptions внешнее имя параметра и:

Если вы предоставите внешнее имя параметра для параметра, то внешнее имя должно всегда использоваться при вызове функции.

Поскольку существует две функции, называемые application с разными именами внешних параметров, мы всегда должны указывать внешние параметры при обращении к функции. Таким образом, полное имя функции/метода будет

application(_:didFinishLaunchingWithOptions:) 

Вы правы там не будет какой-либо конвенции сделано еще в виду Swift функций. Самым надежным способом ссылки на функцию теперь является использование соглашения Obj-C.

application:didFinishLaunchingWithOptions: 

который по-прежнему используется во всех ссылках документации Apple.

Данное соглашение используется во всей документации Apple.

+2

Это лучший ответ и охватывает все проблемы и интересные моменты (за исключением того, что документация явно ссылается на них через версию Objective-C): http://i.imgur.com/QVcdcRB.png (есть небольшая коробка на В верхней части документации выберите «Objective-C», «Swift» или «Both». Если вы поместите ее в Swift, появится стиль Swift. – nhgrif

0

Что это значит - его название в документации? это application(_:didFinishLaunchingWithOptions:) я не могу представить себе обстоятельства, когда вам нужно вызвать его вручную, но только в случае, если:

application(app, didFinishLaunchingWithOptions:aDictionary) 
1

Метод действительно «просто» application.
Swift использует это чаще, если у вас есть tableview, например почти все функции начинаются с tableview

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

Параметры «определяют» функции вместо метода.

0

Именование абсолютно одинаково на обоих языках.

Если вы хотите получить хорошее доказательство, попробуйте использовать любое другое название в селекторе.

+2

Хотя этот ответ дает хорошую оценку, он, безусловно, может намного лучше объяснить свою точку зрения. – nhgrif

Смежные вопросы