In this short article you will know:
Selector
in Objective-CSelector
in Swift- Passing value using
Selector
Selector in Objective-C
Selector is a concept of Objective-C Runtime, which allows to turn a method’s name (NSString) into a SEL
type. Basically you cand find @selector
everywhere, such as adding a method to a view, NSNotification, etc.
The above code shows adding a right navigation button named Email Me
on the top navigation controller, and the button has a method called onSendEmail
which allow you to do something such as sending an email.
Selector in Swift
Similar usage in Swift:
Two things need to be aware in Swift when using Selector
:
1, private
methods must conform with @objc
In the above swift code, if the onSendEmail
is a private
method, the compiler will pop up an error:

The reason is such a method is only available to Swift class itself, selector
is a objective-c
method. So it will recommend you to add @objc
in front of the function name:
@objc private func onSendEmail(){
}
2, Another thing is when methods have parameters, you can call in two ways
Say if we want to pass a string value to onSendEmail
, what we do then? And of course, a global variable is one solution to this, but what else?
The answer is: customising an UIBarButtonItem. In the customized UIBarButtonItem, create an attribute where you want to store value.
Same thing on Objective-C.