Alguns métodos tem na assinatura o @objc. O que significa?
Alguns métodos tem na assinatura o @objc. O que significa?
Boa noite, Rodrigo! Como vai?
É para tornar o método visível para o Objective C e para o Objective-C runtime.
Para saber mais: https://stackoverflow.com/questions/30795117/when-to-use-objc-in-swift-code
Grande abraço e bons estudos!
Por padrão, o Swift gera código que está disponível apenas para outro código Swift, mas se você precisar interagir com o tempo de execução do Objective-C - todo o UIKit, por exemplo - você precisa dizer ao Swift o que fazer.
É aí que entra o atributo @objc: quando você o aplica a uma classe ou método, ele instrui o Swift a disponibilizar essas coisas para o Objective-C, bem como para o código Swift. Assim, sempre que você quiser chamar um método a partir de um UIBarButtonItem ou Timer, você precisará marcar esse método usando @objc para que ele seja entendido pelo Objective-C.
Não se preocupe: se você se esquecer de adicionar @objc quando for necessário, seu código simplesmente não será compilado. Não é algo que você pode esquecer por acidente e apresentar um bug.
Para expor um método para Objective-C, basta escrever @objc antes de seu nome assim:
class MyController: UIViewController {
@objc func authenticateUser () {
}
}
Toda essa classe é automaticamente amigável ao Objective-C porque ela herda do UIViewController, mas se você precisar dela, você também pode explicitamente abrir uma classe para o Objective-C marcando-a como @objc.
Este recurso está disponível a partir do iOS 8.0
Perfeito. Obrigado pessoal!