Why is the @objc tag needed to use a selector?

前端 未结 1 950
青春惊慌失措
青春惊慌失措 2020-12-22 11:51

I am trying to use a selector to see if a certain protocol can perform an action. When I try it like this:

protocol Test {
    func hello()
    func goodBye(         


        
相关标签:
1条回答
  • 2020-12-22 12:34

    By default Swift generates code that is only available to other Swift code, but if you need to interact with the Objective-C runtime – all of UIKit, for example – you need to tell Swift what to do.

    That’s where the @objc attribute comes in: when you apply it to a class or method it instructs Swift to make those things available to Objective-C as well as Swift code. So, any time you want to call a method from a UIBarButtonItem or a Timer, you’ll need to mark that method using @objc so it’s exposed – both of those, and many others, are Objective-C code.

    Don’t worry: if you forget to add @objc when it’s needed, your code simply won’t compile – it’s not something you can forget by accident and introduce a bug.

    0 讨论(0)
提交回复
热议问题