#function #methods #swift #reserved
#функция #методы #swift #зарезервировано
Вопрос:
Может кто-нибудь, пожалуйста, объяснить, как вызываются определенные функции? Будет ли функция с именем init вызываться автоматически, когда кто-то создает новый объект следующим образом: var object: type = type(param1)
. Я также видел это в NSURLConnection
. У методов, похоже, есть такие имена, как connectionDidFinishLoading
или что-то в этом роде, но я не понимаю, это закодировано на языке swift, чтобы это имя имело специальные действия? Эта функция просто запустится, как только соединение будет завершено? Например, как бы он узнал, если вы не «отправили сообщение» этой функции.
Ответ №1:
Хорошо, во-первых, в Swift вы больше не «отправляете сообщения» объектам. Вызовы функций и методов напрямую связываются компилятором. Единственное исключение — это когда у вас есть объекты, которые наследуются от NSObject
, потому что тогда он все еще выполняется во время выполнения Objective-C.
Во-вторых, type(param1)
это пример init
функции. Это не «автоматически» вызывает его. Именно так вы определяете методы инициализатора в Swift. Вы напрямую вызываете его при создании объекта.
Третий connectionDidFinishLoading
определяется на NSURLConnectionDataDelegate
. Когда вы создаете an NSURLConnection
, вы можете предоставить ему делегат, который должен реализовать этот протокол. Если у вас есть объект, установленный в качестве делегата, который реализует протокол, NSURLConnection
экземпляр вызовет этот метод при необходимости. Именно так работает шаблон делегирования, который используется во всех UIKit и Cocoa.