小编悟空之*_*空之空的帖子

iOS lazy var UIBarButtonItem目标问题

我在使用惰性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为零.

我不知道为什么会这样,但我很确定这是一个错误.有谁知道这件事?如果你能解释一下,我将非常感激.

lazy-evaluation target uibarbuttonitem ios swift

5
推荐指数
1
解决办法
455
查看次数

标签 统计

ios ×1

lazy-evaluation ×1

swift ×1

target ×1

uibarbuttonitem ×1