请帮助我修复不了解的内存泄漏。我有一个自定义的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)
请帮助我了解为什么这会导致内存泄漏。谢谢!