Fixes various memory leaks
This commit is contained in:
parent
6b8414ccdc
commit
2c0709fa38
@ -170,8 +170,10 @@ private extension GamesViewController
|
|||||||
|
|
||||||
self.searchController = RSTSearchController(searchResultsController: searchResultsController)
|
self.searchController = RSTSearchController(searchResultsController: searchResultsController)
|
||||||
self.searchController?.searchableKeyPaths = [#keyPath(Game.name)]
|
self.searchController?.searchableKeyPaths = [#keyPath(Game.name)]
|
||||||
self.searchController?.searchHandler = { [weak searchController, weak searchResultsController] (searchValue, _) in
|
self.searchController?.searchHandler = { [weak self, weak searchResultsController] (searchValue, _) in
|
||||||
if searchController?.searchBar.text?.isEmpty == false
|
guard let self = self else { return nil }
|
||||||
|
|
||||||
|
if self.searchController?.searchBar.text?.isEmpty == false
|
||||||
{
|
{
|
||||||
self.pageViewController.view.isHidden = true
|
self.pageViewController.view.isHidden = true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,9 +73,9 @@ private extension GameSyncStatusViewController
|
|||||||
{
|
{
|
||||||
private func makeDataSource() -> RSTCompositeTableViewDataSource<NSManagedObject>
|
private func makeDataSource() -> RSTCompositeTableViewDataSource<NSManagedObject>
|
||||||
{
|
{
|
||||||
func configure(_ cell: UITableViewCell, recordedObject: NSManagedObject)
|
// Use closure instead of local function to allow us to capture `self` weakly.
|
||||||
{
|
let configure = { [weak self] (cell: UITableViewCell, recordedObject: NSManagedObject) in
|
||||||
if let record = self.recordsByObjectURI[recordedObject.objectID.uriRepresentation()], record.isConflicted
|
if let record = self?.recordsByObjectURI[recordedObject.objectID.uriRepresentation()], record.isConflicted
|
||||||
{
|
{
|
||||||
cell.textLabel?.textColor = .red
|
cell.textLabel?.textColor = .red
|
||||||
}
|
}
|
||||||
@ -96,7 +96,7 @@ private extension GameSyncStatusViewController
|
|||||||
cell.textLabel?.text = NSLocalizedString("Game Save", comment: "")
|
cell.textLabel?.text = NSLocalizedString("Game Save", comment: "")
|
||||||
}
|
}
|
||||||
|
|
||||||
configure(cell, recordedObject: item)
|
configure(cell, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
let saveStatesFetchRequest = SaveState.fetchRequest() as NSFetchRequest<SaveState>
|
let saveStatesFetchRequest = SaveState.fetchRequest() as NSFetchRequest<SaveState>
|
||||||
@ -109,7 +109,7 @@ private extension GameSyncStatusViewController
|
|||||||
let saveStatesDataSource = RSTFetchedResultsTableViewDataSource(fetchRequest: saveStatesFetchRequest, managedObjectContext: DatabaseManager.shared.viewContext)
|
let saveStatesDataSource = RSTFetchedResultsTableViewDataSource(fetchRequest: saveStatesFetchRequest, managedObjectContext: DatabaseManager.shared.viewContext)
|
||||||
saveStatesDataSource.cellConfigurationHandler = { (cell, saveState, indexPath) in
|
saveStatesDataSource.cellConfigurationHandler = { (cell, saveState, indexPath) in
|
||||||
cell.textLabel?.text = saveState.localizedName
|
cell.textLabel?.text = saveState.localizedName
|
||||||
configure(cell, recordedObject: saveState)
|
configure(cell, saveState)
|
||||||
}
|
}
|
||||||
|
|
||||||
let cheatsFetchRequest = Cheat.fetchRequest() as NSFetchRequest<Cheat>
|
let cheatsFetchRequest = Cheat.fetchRequest() as NSFetchRequest<Cheat>
|
||||||
@ -120,7 +120,7 @@ private extension GameSyncStatusViewController
|
|||||||
cheatsDataSource.cellConfigurationHandler = { (cell, cheat, indexPath) in
|
cheatsDataSource.cellConfigurationHandler = { (cell, cheat, indexPath) in
|
||||||
cell.textLabel?.text = cheat.name
|
cell.textLabel?.text = cheat.name
|
||||||
|
|
||||||
configure(cell, recordedObject: cheat)
|
configure(cell, cheat)
|
||||||
}
|
}
|
||||||
|
|
||||||
let dataSources = [gameDataSource, saveStatesDataSource, cheatsDataSource] as! [RSTArrayTableViewDataSource<NSManagedObject>]
|
let dataSources = [gameDataSource, saveStatesDataSource, cheatsDataSource] as! [RSTArrayTableViewDataSource<NSManagedObject>]
|
||||||
|
|||||||
@ -132,7 +132,7 @@ private extension RecordVersionsViewController
|
|||||||
|
|
||||||
let localVersionsDataSource = RSTDynamicTableViewDataSource<Version>()
|
let localVersionsDataSource = RSTDynamicTableViewDataSource<Version>()
|
||||||
localVersionsDataSource.numberOfSectionsHandler = { 1 }
|
localVersionsDataSource.numberOfSectionsHandler = { 1 }
|
||||||
localVersionsDataSource.numberOfItemsHandler = { _ in self.record.localModificationDate != nil ? 1 : 0 }
|
localVersionsDataSource.numberOfItemsHandler = { [weak self] _ in self?.record.localModificationDate != nil ? 1 : 0 }
|
||||||
localVersionsDataSource.cellConfigurationHandler = { [weak self] (cell, _, indexPath) in
|
localVersionsDataSource.cellConfigurationHandler = { [weak self] (cell, _, indexPath) in
|
||||||
guard let `self` = self else { return }
|
guard let `self` = self else { return }
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ private extension RecordVersionsViewController
|
|||||||
|
|
||||||
let loadingDataSource = RSTDynamicTableViewDataSource<Version>()
|
let loadingDataSource = RSTDynamicTableViewDataSource<Version>()
|
||||||
loadingDataSource.numberOfSectionsHandler = { 1 }
|
loadingDataSource.numberOfSectionsHandler = { 1 }
|
||||||
loadingDataSource.numberOfItemsHandler = { _ in (self.versions == nil) ? 1 : 0 }
|
loadingDataSource.numberOfItemsHandler = { [weak self] _ in (self?.versions == nil) ? 1 : 0 }
|
||||||
loadingDataSource.cellIdentifierHandler = { _ in "LoadingCell" }
|
loadingDataSource.cellIdentifierHandler = { _ in "LoadingCell" }
|
||||||
loadingDataSource.cellConfigurationHandler = { (_, _, _) in }
|
loadingDataSource.cellConfigurationHandler = { (_, _, _) in }
|
||||||
|
|
||||||
|
|||||||
@ -66,12 +66,12 @@ private extension SyncStatusViewController
|
|||||||
|
|
||||||
let fetchedDataSource = RSTFetchedResultsTableViewDataSource(fetchedResultsController: fetchedResultsController)
|
let fetchedDataSource = RSTFetchedResultsTableViewDataSource(fetchedResultsController: fetchedResultsController)
|
||||||
fetchedDataSource.searchController.searchableKeyPaths = [#keyPath(Game.name)]
|
fetchedDataSource.searchController.searchableKeyPaths = [#keyPath(Game.name)]
|
||||||
fetchedDataSource.cellConfigurationHandler = { (cell, game, indexPath) in
|
fetchedDataSource.cellConfigurationHandler = { [weak self] (cell, game, indexPath) in
|
||||||
let cell = cell as! BadgedTableViewCell
|
let cell = cell as! BadgedTableViewCell
|
||||||
cell.textLabel?.text = game.name
|
cell.textLabel?.text = game.name
|
||||||
cell.textLabel?.numberOfLines = 0
|
cell.textLabel?.numberOfLines = 0
|
||||||
|
|
||||||
if let gameConflictsCount = self.gameConflictsCount
|
if let gameConflictsCount = self?.gameConflictsCount
|
||||||
{
|
{
|
||||||
if let count = gameConflictsCount[game.objectID.uriRepresentation()], count > 0
|
if let count = gameConflictsCount[game.objectID.uriRepresentation()], count > 0
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user