Быстрые имена зарезервированных функций?

Может кто-нибудь объяснить, как вызываются определенные функции? Функция с именем init будет вызываться автоматически, когда кто-то создает новый объект, например так: var object: type = type(param1), Я также видел это в NSURLConnection, Методы, кажется, имеют имена, как connectionDidFinishLoading или что-то, но я не понимаю, это закодировано в быстром языке для этого имени, чтобы иметь специальные действия? Эта функция просто запустится, как только закончится соединение? Например, как бы он узнал, если вы не "отправили сообщение" этой функции.

1 ответ

Хорошо, во-первых, в Swift вы больше не "отправляете сообщения" объектам. Вызовы функций и методов связаны компилятором напрямую. Единственное, кроме этого, когда у вас есть объекты, которые наследуются от NSObject потому что тогда он все еще работает во время выполнения Objective C.

Во-вторых, type(param1) является примером init функция. Это не "автоматически" вызывая его. Именно так вы определяете методы инициализатора в Swift. Вы напрямую вызываете его при создании объекта.

В третьих connectionDidFinishLoading определяется на NSURLConnectionDataDelegate, Когда вы создаете NSURLConnection Вы можете дать ему делегата, который должен реализовать этот протокол. Если в качестве делегата, который реализует протокол, установлен объект, то NSURLConnection экземпляр будет вызывать этот метод, когда это уместно. Вот как работает шаблон делегата, который распространяется по всему UIKit и Какао.

Другие вопросы по тегам