Я создал навигацию, которая выдвигает контроллер вида, который содержит вид изображения, и кнопку, которая добавляет тот же контроллер вида при каждом нажатии кнопки.После каждого нажатия память увеличивается, а после каждого следующего нажатия память не освобождается, несмотря на то, что вызывается deinit
.В коде нет ничего, что указывало бы на утечку памяти, есть что-то, чего мне не хватает, спасибо?
полный репозиторий проекта
class ViewController: UIViewController {
lazy var nextButton:UIButton? = {
let button = UIButton(type: .roundedRect)
button.setTitle("Next", for: .normal)
button.addTarget(self, action: #selector(nextButtonTapped), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
button.backgroundColor = UIColor.red
return button
}()
lazy var imageView:UIImageView? = {
let image = #imageLiteral(resourceName: "DJI_0014")
let imageView = UIImageView(image: image)
imageView.translatesAutoresizingMaskIntoConstraints = false
return imageView
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
guard let imageView = self.imageView, let nextButton = self.nextButton else{
print("imageView, nextButton are nil")
return
}
self.view.backgroundColor = UIColor.white
self.view.addSubview(imageView)
NSLayoutConstraint.activate([
imageView.topAnchor.constraint(equalTo:self.view.topAnchor),
imageView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
imageView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
imageView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)])
view.addSubview(nextButton)
NSLayoutConstraint.activate([nextButton.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
nextButton.centerYAnchor.constraint(equalTo: self.view.centerYAnchor, constant: 0),nextButton.heightAnchor.constraint(equalToConstant: 200),nextButton.widthAnchor.constraint(equalToConstant: 200)])
}
@objc func nextButtonTapped(){
print("next button tapped")
self.navigationController?.pushViewController(ViewController(), animated: true)
}
deinit {
print("view controller is deinitialized")
}
}
Я смотрел другие перечисленные вопросыниже и попытался принять их предложения, но ни одно из них, похоже, не помогло
Память навигационной дуги не освобождена
Проблема утечки памяти в контроллере навигации