Fixes various strong reference cycle leaks
This commit is contained in:
parent
da7705aaff
commit
694adb6c6c
@ -1 +1 @@
|
||||
Subproject commit 1fc24e32383868e7eaf78d01b36ff155a2915daa
|
||||
Subproject commit 670a55012fcba808416e85cc7fa66a0ba135ab1d
|
||||
@ -10,7 +10,6 @@
|
||||
BF02BD001D361BD1000892F2 /* NSFetchedResultsController+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = BF02BCFF1D361BD1000892F2 /* NSFetchedResultsController+Conveniences.m */; };
|
||||
BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; };
|
||||
BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
BF04A5A31CF8E61C00B4A267 /* UIViewController+PeekPop.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF04A5A21CF8E61C00B4A267 /* UIViewController+PeekPop.swift */; };
|
||||
BF090CF41B490D8300DCAB45 /* UIDevice+Vibration.m in Sources */ = {isa = PBXBuildFile; fileRef = BF090CF31B490D8300DCAB45 /* UIDevice+Vibration.m */; };
|
||||
BF0CDDAD1C8155D200640168 /* LoadImageOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0CDDAC1C8155D200640168 /* LoadImageOperation.swift */; };
|
||||
BF107EC41BF413F000E0C32C /* GamesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF107EC31BF413F000E0C32C /* GamesViewController.swift */; };
|
||||
@ -95,7 +94,6 @@
|
||||
BF02BCFE1D361BD1000892F2 /* NSFetchedResultsController+Conveniences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSFetchedResultsController+Conveniences.h"; sourceTree = "<group>"; };
|
||||
BF02BCFF1D361BD1000892F2 /* NSFetchedResultsController+Conveniences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSFetchedResultsController+Conveniences.m"; sourceTree = "<group>"; };
|
||||
BF0418131D01E93400E85BCF /* GBADeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GBADeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BF04A5A21CF8E61C00B4A267 /* UIViewController+PeekPop.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+PeekPop.swift"; sourceTree = "<group>"; };
|
||||
BF090CF11B490D8300DCAB45 /* Delta-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Delta-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
BF090CF21B490D8300DCAB45 /* UIDevice+Vibration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+Vibration.h"; sourceTree = "<group>"; };
|
||||
BF090CF31B490D8300DCAB45 /* UIDevice+Vibration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+Vibration.m"; sourceTree = "<group>"; };
|
||||
@ -190,7 +188,6 @@
|
||||
BF090CF31B490D8300DCAB45 /* UIDevice+Vibration.m */,
|
||||
BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */,
|
||||
BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */,
|
||||
BF04A5A21CF8E61C00B4A267 /* UIViewController+PeekPop.swift */,
|
||||
BFCEA67D1D56FF640061A534 /* UIViewControllerContextTransitioning+Conveniences.swift */,
|
||||
);
|
||||
path = Extensions;
|
||||
@ -588,7 +585,6 @@
|
||||
BF7AE81E1C2E984300B1B5BC /* GridCollectionViewCell.swift in Sources */,
|
||||
BF34FA111CF1899D006624C7 /* CheatTextView.swift in Sources */,
|
||||
BFFC46231D5984A000AF2CC6 /* LaunchViewController.swift in Sources */,
|
||||
BF04A5A31CF8E61C00B4A267 /* UIViewController+PeekPop.swift in Sources */,
|
||||
BF4566E81BC090B6007BFA1A /* Model.xcdatamodeld in Sources */,
|
||||
BFDE393C1BC0CEDF003F72E8 /* Game.swift in Sources */,
|
||||
BF34FA071CF0F510006624C7 /* EditCheatViewController.swift in Sources */,
|
||||
|
||||
@ -173,13 +173,6 @@ extension GameViewController
|
||||
self.updateControllers()
|
||||
}
|
||||
|
||||
override func viewDidLayoutSubviews()
|
||||
{
|
||||
super.viewDidLayoutSubviews()
|
||||
|
||||
self.controllerView.isHidden = self.isPreviewing
|
||||
}
|
||||
|
||||
// MARK: - Segues
|
||||
/// KVO
|
||||
|
||||
@ -213,7 +206,7 @@ extension GameViewController
|
||||
}
|
||||
|
||||
pauseViewController.sustainButtonsItem?.selected = (self.sustainedInputs[ObjectIdentifier(gameController)]?.count ?? 0) > 0
|
||||
pauseViewController.sustainButtonsItem?.action = { [unowned self] item in
|
||||
pauseViewController.sustainButtonsItem?.action = { [unowned self, unowned pauseViewController] item in
|
||||
|
||||
self.resetSustainedInputs(for: gameController)
|
||||
|
||||
|
||||
@ -1,18 +0,0 @@
|
||||
//
|
||||
// UIViewController+PeekPop.swift
|
||||
// Delta
|
||||
//
|
||||
// Created by Riley Testut on 5/27/16.
|
||||
// Copyright © 2016 Riley Testut. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension UIViewController
|
||||
{
|
||||
var isPreviewing: Bool
|
||||
{
|
||||
guard let presentationController = self.presentationController else { return false }
|
||||
return NSStringFromClass(presentationController.dynamicType).contains("PreviewPresentation")
|
||||
}
|
||||
}
|
||||
@ -36,7 +36,9 @@ class GamesCollectionViewController: UICollectionViewController
|
||||
super.init(coder: aDecoder)
|
||||
|
||||
self.dataSource.fetchedResultsController.delegate = self
|
||||
self.dataSource.cellConfigurationHandler = self.configureCell
|
||||
self.dataSource.cellConfigurationHandler = { [unowned self] (cell, game) in
|
||||
self.configureCell(cell, game: game)
|
||||
}
|
||||
}
|
||||
|
||||
override func viewDidLoad()
|
||||
|
||||
@ -247,12 +247,14 @@ extension CheatsViewController: UIViewControllerPreviewingDelegate
|
||||
let cheat = self.fetchedResultsController.object(at: indexPath) as! Cheat
|
||||
|
||||
let editCheatViewController = self.makeEditCheatViewController(cheat: cheat)
|
||||
editCheatViewController.isPreviewing = true
|
||||
return editCheatViewController
|
||||
}
|
||||
|
||||
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)
|
||||
{
|
||||
let editCheatViewController = viewControllerToCommit as! EditCheatViewController
|
||||
editCheatViewController.isPreviewing = false
|
||||
editCheatViewController.presentWithPresentingViewController(self)
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,6 +41,8 @@ class EditCheatViewController: UITableViewController
|
||||
|
||||
weak var delegate: EditCheatViewControllerDelegate?
|
||||
|
||||
var isPreviewing = false
|
||||
|
||||
private var supportedCheatFormats: [CheatFormat]!
|
||||
|
||||
private var selectedCheatFormat: CheatFormat {
|
||||
@ -69,6 +71,7 @@ class EditCheatViewController: UITableViewController
|
||||
// Delaying until next run loop prevents self from being dismissed immediately
|
||||
DispatchQueue.main.async {
|
||||
let editCheatViewController = viewController as! EditCheatViewController
|
||||
editCheatViewController.isPreviewing = false
|
||||
editCheatViewController.presentWithPresentingViewController(presentingViewController)
|
||||
}
|
||||
}
|
||||
|
||||
@ -443,14 +443,14 @@ private extension SaveStatesViewController
|
||||
{
|
||||
if saveState.game.previewSaveState != saveState
|
||||
{
|
||||
let previewAction = Action(title: NSLocalizedString("Set as Preview Save State", comment: ""), style: .default, action: { action in
|
||||
let previewAction = Action(title: NSLocalizedString("Set as Preview Save State", comment: ""), style: .default, action: { [unowned self] action in
|
||||
self.updatePreviewSaveState(saveState)
|
||||
})
|
||||
actions.append(previewAction)
|
||||
}
|
||||
else
|
||||
{
|
||||
let previewAction = Action(title: NSLocalizedString("Remove as Preview Save State", comment: ""), style: .default, action: { action in
|
||||
let previewAction = Action(title: NSLocalizedString("Remove as Preview Save State", comment: ""), style: .default, action: { [unowned self] action in
|
||||
self.updatePreviewSaveState(nil)
|
||||
})
|
||||
actions.append(previewAction)
|
||||
@ -460,7 +460,7 @@ private extension SaveStatesViewController
|
||||
let cancelAction = Action(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, action: nil)
|
||||
actions.append(cancelAction)
|
||||
|
||||
let renameAction = Action(title: NSLocalizedString("Rename", comment: ""), style: .default, action: { action in
|
||||
let renameAction = Action(title: NSLocalizedString("Rename", comment: ""), style: .default, action: { [unowned self] action in
|
||||
self.renameSaveState(saveState)
|
||||
})
|
||||
actions.append(renameAction)
|
||||
@ -469,19 +469,19 @@ private extension SaveStatesViewController
|
||||
{
|
||||
case .auto: break
|
||||
case .general:
|
||||
let lockAction = Action(title: NSLocalizedString("Lock", comment: ""), style: .default, action: { action in
|
||||
let lockAction = Action(title: NSLocalizedString("Lock", comment: ""), style: .default, action: { [unowned self] action in
|
||||
self.lockSaveState(saveState)
|
||||
})
|
||||
actions.append(lockAction)
|
||||
|
||||
case .locked:
|
||||
let unlockAction = Action(title: NSLocalizedString("Unlock", comment: ""), style: .default, action: { action in
|
||||
let unlockAction = Action(title: NSLocalizedString("Unlock", comment: ""), style: .default, action: { [unowned self] action in
|
||||
self.unlockSaveState(saveState)
|
||||
})
|
||||
actions.append(unlockAction)
|
||||
}
|
||||
|
||||
let deleteAction = Action(title: NSLocalizedString("Delete", comment: ""), style: .destructive, action: { action in
|
||||
let deleteAction = Action(title: NSLocalizedString("Delete", comment: ""), style: .destructive, action: { [unowned self] action in
|
||||
self.deleteSaveState(saveState)
|
||||
})
|
||||
actions.append(deleteAction)
|
||||
@ -581,6 +581,9 @@ extension SaveStatesViewController: UIViewControllerPreviewingDelegate, UIPrevie
|
||||
emulatorCore.stop()
|
||||
}
|
||||
|
||||
self.previewGameViewController.loadViewIfNeeded()
|
||||
self.previewGameViewController.controllerView.isHidden = true
|
||||
|
||||
self.previewGameViewController.game = self.game
|
||||
self.previewGameViewController.emulatorCore?.start()
|
||||
self.previewGameViewController.emulatorCore?.pause()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user