public class somethingViewController{
func viewDidLoad(){
let contentImageView = UIImageView()
let contentImageViewTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(somethingViewController.tapped(_:)))
contentImageView.addGestureRecognizer(contentImageViewTapRecognizer)
let stackView = OAStackView(arrangedSubviews: [contentImageView])
self.view.addSubview(stackView)
}
func tapped(sender: UITapGestureRecognizer){
//tapped
}
}
Ich glaube nicht, dass dies ein starker Referenzzyklus ist, aber ich kann falsch liegen. Der Grund, warum ich denke, könnte ein starker Referenzzyklus sein, weil stackView
Punkte auf contentImageView
zeigt, die zurück auf somethingViewController
über seinen Selektor in der Tap-Erkennung zeigt.Wird diese Situation einen starken Referenzzyklus erzeugen?
Wenn es ein starker Referenzzyklus ist, wie löse ich das Problem?
Gesture Erkenner halten keinen starken Hinweis auf ihre 'target', so deshalb gibt es keinen starken Referenzzyklus. – Rob
Sie können '#selector (tapped)' anstelle des vollständigen Namens '#selector (somethingViewController.tapped (_ :))' schreiben. BTW-Klassen werden normalerweise wie 'SomethingViewController' benannt, beginnend mit Großbuchstaben. – kennytm