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