J'ai trouvé ce problème cible UIBarButtonItem inconsciemment lors de l'utilisation de l'initialisation var paresseux.iOS paresseux var UIBarButtonItem cible problème
class ViewController: UIViewController {
lazy var barButtonItem1 = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(action1))
lazy var barButtonItem2: UIBarButtonItem = {
let barButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(action2))
return barButtonItem
}
override func viewDidLoad() {
super.viewDidLoad()
print(barButtonItem1.target, barButtonItem2.target)
}
}
Les résultats imprimés ont montré que barButtonItem1.target était nulle, et barButtonItem2.target était soi-même, qui semble fou! J'ai eu ce problème quand j'utilise l'écriture paresseuse var de barButtonItem1, et puis j'ai trouvé que l'action de barButtonItem1 ne peut jamais être appelée, et finalement le problème était barButtonItem1.target était nul.
Je ne sais pas pourquoi cela se produit, mais je suis sûr que c'est un bug. Est-ce que quelqu'un sait quelque chose à ce sujet? J'apprécierai vraiment si vous pouvez expliquer à ce sujet.
Je ne pense pas que vous faites 'barButtonItem1' correctement. Tout d'abord 'lazy var' doit être déclaré avec un type de données. Deuxièmement, vous définissez simplement sa valeur comme une variable régulière. S'il vous plaît lire: https: //www.hackingwithswift.com/example-code/language/what-are-paresseux-variables – thedp
La déclaration de barButtonItem1 devrait être correcte, selon [link] (https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language /Properties.html). – user5685969
Selon [link] (https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html), la déclaration de barButtonItem1 doit être correcte. Cependant j'ai essayé ce que vous avez dit pour ajouter une déclaration de type de données pour barButtonItem1, et il se comporte bien maintenant. Je ne sais toujours pas ce qui cause ça. – user5685969