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?.searchableKeyPaths = [#keyPath(Game.name)]
|
||||
self.searchController?.searchHandler = { [weak searchController, weak searchResultsController] (searchValue, _) in
|
||||
if searchController?.searchBar.text?.isEmpty == false
|
||||
self.searchController?.searchHandler = { [weak self, weak searchResultsController] (searchValue, _) in
|
||||
guard let self = self else { return nil }
|
||||
|
||||
if self.searchController?.searchBar.text?.isEmpty == false
|
||||
{
|
||||
self.pageViewController.view.isHidden = true
|
||||
}
|
||||
|
||||
@ -73,9 +73,9 @@ private extension GameSyncStatusViewController
|
||||
{
|
||||
private func makeDataSource() -> RSTCompositeTableViewDataSource<NSManagedObject>
|
||||
{
|
||||
func configure(_ cell: UITableViewCell, recordedObject: NSManagedObject)
|
||||
{
|
||||
if let record = self.recordsByObjectURI[recordedObject.objectID.uriRepresentation()], record.isConflicted
|
||||
// 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
|
||||
{
|
||||
cell.textLabel?.textColor = .red
|
||||
}
|
||||
@ -96,7 +96,7 @@ private extension GameSyncStatusViewController
|
||||
cell.textLabel?.text = NSLocalizedString("Game Save", comment: "")
|
||||
}
|
||||
|
||||
configure(cell, recordedObject: item)
|
||||
configure(cell, item)
|
||||
}
|
||||
|
||||
let saveStatesFetchRequest = SaveState.fetchRequest() as NSFetchRequest<SaveState>
|
||||
@ -109,7 +109,7 @@ private extension GameSyncStatusViewController
|
||||
let saveStatesDataSource = RSTFetchedResultsTableViewDataSource(fetchRequest: saveStatesFetchRequest, managedObjectContext: DatabaseManager.shared.viewContext)
|
||||
saveStatesDataSource.cellConfigurationHandler = { (cell, saveState, indexPath) in
|
||||
cell.textLabel?.text = saveState.localizedName
|
||||
configure(cell, recordedObject: saveState)
|
||||
configure(cell, saveState)
|
||||
}
|
||||
|
||||
let cheatsFetchRequest = Cheat.fetchRequest() as NSFetchRequest<Cheat>
|
||||
@ -120,7 +120,7 @@ private extension GameSyncStatusViewController
|
||||
cheatsDataSource.cellConfigurationHandler = { (cell, cheat, indexPath) in
|
||||
cell.textLabel?.text = cheat.name
|
||||
|
||||
configure(cell, recordedObject: cheat)
|
||||
configure(cell, cheat)
|
||||
}
|
||||
|
||||
let dataSources = [gameDataSource, saveStatesDataSource, cheatsDataSource] as! [RSTArrayTableViewDataSource<NSManagedObject>]
|
||||
|
||||
@ -132,7 +132,7 @@ private extension RecordVersionsViewController
|
||||
|
||||
let localVersionsDataSource = RSTDynamicTableViewDataSource<Version>()
|
||||
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
|
||||
guard let `self` = self else { return }
|
||||
|
||||
@ -157,7 +157,7 @@ private extension RecordVersionsViewController
|
||||
|
||||
let loadingDataSource = RSTDynamicTableViewDataSource<Version>()
|
||||
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.cellConfigurationHandler = { (_, _, _) in }
|
||||
|
||||
|
||||
@ -66,12 +66,12 @@ private extension SyncStatusViewController
|
||||
|
||||
let fetchedDataSource = RSTFetchedResultsTableViewDataSource(fetchedResultsController: fetchedResultsController)
|
||||
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
|
||||
cell.textLabel?.text = game.name
|
||||
cell.textLabel?.numberOfLines = 0
|
||||
|
||||
if let gameConflictsCount = self.gameConflictsCount
|
||||
if let gameConflictsCount = self?.gameConflictsCount
|
||||
{
|
||||
if let count = gameConflictsCount[game.objectID.uriRepresentation()], count > 0
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user