如何使用 UIButton 使 CADisplayLink 失效?

How do I invalidate CADisplayLink with a UIButton?

极度菜鸟。我定义了一个 CADisplayLink,然后我想稍后使用 UIButton 使它无效。我收到错误 'cannot find in scope' 因为(我假设)link 是在函数内部初始化的。无法弄清楚如何“进入”函数以使其失效。 代码: ``` 函数 myDisplayLink() {let displayLink = CADisplayLink(target: self, selector: #selector(myCycle)) displayLink.add(to: .current, forMode: RunLoop.Mode.default) }

@IBAction func OFF(_ sender: UIButton)
{ ????? }
```

您可以在函数范围之外将其声明为可选,在 class 的根目录中,然后只需在函数中对其进行初始化,如下所示:

class: SomeClass {

 var displayLink: CADisplayLink?

 func myDisplayLink() {
  displayLink = CADisplayLink(target: self, selector: #selector(myCycle))
  displayLink!.add(to: .current, forMode: RunLoop.Mode.default) 
 }

 @IBAction func OFF(_ sender: UIButton) {
  displayLink!.invalidate()
 }

}