Sélecteur vs Action Swift 4
Nouvelle Swift. J'ai deux extraits ci-dessous:
NotificationCenter.default.addObserver(self,
selector:#selector(ViewController.notificationReceived),
name: Notification.Name(rawValue: name), object: nil)
@objc func notificationReceived(notification:Notification){
let x = notification.userInfo!
print("\(x["name"]!)")
}
et enfin
let x:UITapGestureRecognizer = UITapGestureRecognizer(target: self,
action: #selector(tapped))
self.addGestureRecognizer(x)
func tapped(){
print("tapped")
self.delegate!.theViewTapped()
}
Pourquoi est-il que pour le notificationCenter
? Je suis censé fournir de la @objc
pour la balise selector
paramètre, mais pas pour le UITapGestureRecognizer
paramètre action?
Quelle est exactement la différence entre Selector
et Action in
Swift?
source d'informationauteur user2511882 | 2017-06-30
Vous devez vous connecter pour publier un commentaire.
Vérifier cette proposition de Swift 4:
SE-0160 Limiter @objc inférence
Selon la description dans la proposition, le second extrait de code doit également
@objc
.En fait, Swift 4 compilateur fourni avec Xcode 9 beta2 génère cette erreur pour la ligne à l'aide de
#selector(tapped)
:Peut-être votre deuxième est un peu trop vieux pour une utilisation avec Swift 4. Vous feriez mieux de réfléchir à toutes les méthodes appelées par le biais du sélecteur de besoin
@objc
attribut.