UIView过渡动画内存泄漏

时间:2019-08-02 14:51:54

标签: swift uiview memory-leaks

请帮助我修复不了解的内存泄漏。我有一个自定义的UIButton子类,可在两个图像之间转换。

class SettingsButton: OMGButton {

var settingsButtonTimer: Timer?

enum SettingsButtonImage: String {
    case Gears
    case Person = "Add Person"
}

var transitioning: Bool = false

var currentButtonImage: SettingsButtonImage = .Gears {
    didSet {
        self.handleImageChange()
    }
}

override func configure() {
    super.configure()
    self.settingsButtonTimer = Timer.scheduledTimer(timeInterval: 15, target: self, selector: #selector(changeImage), userInfo: nil, repeats: true)
}

@objc func changeImage() {
    if self.currentButtonImage == .Gears {
        self.currentButtonImage = .Person
    } else {
        self.currentButtonImage = .Gears
    }
}

func handleImageChange() {
    if !self.transitioning {
        UIView.transition(with: self, duration: 1.5, options: [.beginFromCurrentState, .transitionCrossDissolve], animations: { [unowned self] in
            self.transitioning = true

            // setImage is leaking memory on each transition

            self.setImage(UIImage(named: self.currentButtonImage.rawValue), for: .normal)

        }, completion: { _ in
            self.transitioning = false
        })
    }
}

}

handleImageChange()方法正在泄漏内存-具体来说,它表明它在我设置图像的行上泄漏:

self.setImage(UIImage(named: self.currentButtonImage.rawValue), for: .normal)

请帮助我了解为什么这会导致内存泄漏。谢谢!

0 个答案:

没有答案