prevent unnecessary strong referencing and controller caching

This commit is contained in:
CypherPoet 2019-02-18 01:06:01 -05:00
parent 239de4367c
commit 1b3071aa07
2 changed files with 13 additions and 10 deletions

View File

@ -9,14 +9,16 @@
import UIKit
class ImageViewController: UIViewController {
var owner: SelectionViewController!
weak var owner: SelectionViewController!
var image: String!
var animTimer: Timer!
var imageView: UIImageView!
var sourceImage: UIImage!
lazy var imageFilePath = Bundle.main.path(forResource: image, ofType: nil)!
lazy var imageRenderer = UIGraphicsImageRenderer(size: sourceImage.size)
override func loadView() {
super.loadView()
@ -52,20 +54,16 @@ class ImageViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
guard let sourceImage = UIImage(contentsOfFile: imageFilePath) else { return }
sourceImage = UIImage(contentsOfFile: imageFilePath)!
title = image.replacingOccurrences(of: "-Large.jpg", with: "")
let renderer = UIGraphicsImageRenderer(size: sourceImage.size)
let roundedImage = renderer.image { ctx in
imageView.image = imageRenderer.image { ctx in
ctx.cgContext.addEllipse(in: CGRect(origin: CGPoint.zero, size: sourceImage.size))
ctx.cgContext.closePath()
sourceImage.draw(at: CGPoint.zero)
}
imageView.image = roundedImage
}
override func viewDidAppear(_ animated: Bool) {
@ -77,6 +75,13 @@ class ImageViewController: UIViewController {
self.imageView.alpha = 1
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// make the animTimer release its strong reference on this view controller
animTimer.invalidate()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let defaults = UserDefaults.standard

View File

@ -13,7 +13,6 @@ let cellRowHeight = 90
class SelectionViewController: UITableViewController {
var items = [String]() // this is the array that will store the filenames to load
var viewControllers = [UIViewController]() // create a cache of the detail view controllers for faster loading
var dirty = false
lazy var thumbnailRect = CGRect(origin: CGPoint.zero, size: CGSize(width: cellRowHeight, height: cellRowHeight))
@ -106,7 +105,6 @@ class SelectionViewController: UITableViewController {
dirty = false
// add to our view controller cache and show
viewControllers.append(vc)
navigationController!.pushViewController(vc, animated: true)
}
}