Alguns métodos tem na assinatura o @objc. O que significa?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!