我在使用惰性var初始化时无意识地发现了这个UIBarButtonItem目标问题.
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)
}
}
Run Code Online (Sandbox Code Playgroud)
打印结果显示barButtonItem1.target为零,barButtonItem2.target为self,这看起来很疯狂!当我使用barButtonItem1的懒惰var写时我得到了这个问题,然后我发现barButtonItem1的动作永远不会被调用,最后问题是barButtonItem1.target为零.
我不知道为什么会这样,但我很确定这是一个错误.有谁知道这件事?如果你能解释一下,我将非常感激.