From 4269175cbce7b04a8786b02b49f9787668c3b63d Mon Sep 17 00:00:00 2001 From: Tom Ludwig Date: Mon, 20 May 2024 12:42:56 +0200 Subject: [PATCH] Applied takeRetainedValue() to take ownership where necessary, optimizing memory management --- .../xcshareddata/swiftpm/Package.resolved | 4 +-- .../Documents/Indexer/SearchIndexer+Add.swift | 6 ++--- .../SearchIndexer+InternalMethods.swift | 25 +++++++++---------- .../SearchIndexer+ProgressiveSearch.swift | 2 +- .../Indexer/SearchIndexer+Terms.swift | 4 +-- .../Documents/Indexer/SearchIndexer.swift | 2 +- 6 files changed, 21 insertions(+), 22 deletions(-) diff --git a/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 7790485dfd..ce4215548a 100644 --- a/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "41fcbec1ecbb7853d9ead798bba9d46f35f28767f4d41a009c8eeee022e99a84", + "originHash" : "3f6921a5ec30d1ecb6d6b205cf27a816c318246bb00f0ea367b997cc66527d32", "pins" : [ { "identity" : "anycodable", @@ -85,7 +85,7 @@ { "identity" : "logstream", "kind" : "remoteSourceControl", - "location" : "https://github.com/Wouter01/LogStream", + "location" : "https://github.com/CodeEditApp/LogStream", "state" : { "revision" : "6f83694b2675dcf3b1cea0a52546ff4469c18282", "version" : "1.3.0" diff --git a/CodeEdit/Features/Documents/Indexer/SearchIndexer+Add.swift b/CodeEdit/Features/Documents/Indexer/SearchIndexer+Add.swift index 93743b4c30..bfbb191146 100644 --- a/CodeEdit/Features/Documents/Indexer/SearchIndexer+Add.swift +++ b/CodeEdit/Features/Documents/Indexer/SearchIndexer+Add.swift @@ -22,7 +22,7 @@ extension SearchIndexer { } return modifyIndexQueue.sync { - SKIndexAddDocumentWithText(index, document.takeUnretainedValue(), text as CFString, canReplace) + SKIndexAddDocumentWithText(index, document.takeRetainedValue(), text as CFString, canReplace) } } @@ -66,7 +66,7 @@ extension SearchIndexer { let mime = mimeType ?? self.detectMimeType(fileURL) return modifyIndexQueue.sync { - SKIndexAddDocument(index, document.takeUnretainedValue(), mime as CFString?, canReplace) + SKIndexAddDocument(index, document.takeRetainedValue(), mime as CFString?, canReplace) } } @@ -107,7 +107,7 @@ extension SearchIndexer { /// - Returns: `true` if the document was successfully removed, `false` otherwise. /// **Note:** If the document didn't exist, this also returns `true`. public func removeDocument(url: URL) -> Bool { - let document = SKDocumentCreateWithURL(url as CFURL).takeUnretainedValue() + let document = SKDocumentCreateWithURL(url as CFURL).takeRetainedValue() return self.remove(document: document) } diff --git a/CodeEdit/Features/Documents/Indexer/SearchIndexer+InternalMethods.swift b/CodeEdit/Features/Documents/Indexer/SearchIndexer+InternalMethods.swift index 76cb54b8c1..685f70c210 100644 --- a/CodeEdit/Features/Documents/Indexer/SearchIndexer+InternalMethods.swift +++ b/CodeEdit/Features/Documents/Indexer/SearchIndexer+InternalMethods.swift @@ -64,25 +64,24 @@ extension SearchIndexer { var isLeaf = true - let iterator = SKIndexDocumentIteratorCreate(index, inParentDocument).takeUnretainedValue() + let iterator = SKIndexDocumentIteratorCreate(index, inParentDocument).takeRetainedValue() while let skDocument = SKIndexDocumentIteratorCopyNext(iterator) { isLeaf = false - self.addLeafURLs(index: index, inParentDocument: skDocument.takeUnretainedValue(), docs: &docs) + self.addLeafURLs(index: index, inParentDocument: skDocument.takeRetainedValue(), docs: &docs) } - if isLeaf, inParentDocument != nil, kSKDocumentStateNotIndexed != SKIndexGetDocumentState(index, inParentDocument) { - if let temp = SKDocumentCopyURL(inParentDocument) { - let baseURL = temp.takeUnretainedValue() as URL - let documentID = SKIndexGetDocumentID(index, inParentDocument) - docs.append( - DocumentID( - url: baseURL, - document: inParentDocument!, - documentID: documentID - ) + let url = SKDocumentCopyURL(inParentDocument).takeRetainedValue() + + let documentID = SKIndexGetDocumentID(index, inParentDocument) + docs.append( + DocumentID( + url: url as URL, + document: inParentDocument!, + documentID: documentID ) - } + ) + } } diff --git a/CodeEdit/Features/Documents/Indexer/SearchIndexer+ProgressiveSearch.swift b/CodeEdit/Features/Documents/Indexer/SearchIndexer+ProgressiveSearch.swift index ba7b6d5b76..db06a8d0b6 100644 --- a/CodeEdit/Features/Documents/Indexer/SearchIndexer+ProgressiveSearch.swift +++ b/CodeEdit/Features/Documents/Indexer/SearchIndexer+ProgressiveSearch.swift @@ -93,7 +93,7 @@ extension SearchIndexer { let partialResult: [SearchResult] = zip(urls[0.. SearchResult? in - guard let url = cfurl?.takeUnretainedValue() as URL? else { + guard let url = cfurl?.takeRetainedValue() as URL? else { return nil } diff --git a/CodeEdit/Features/Documents/Indexer/SearchIndexer+Terms.swift b/CodeEdit/Features/Documents/Indexer/SearchIndexer+Terms.swift index dadd5ccb71..0ebe0fd668 100644 --- a/CodeEdit/Features/Documents/Indexer/SearchIndexer+Terms.swift +++ b/CodeEdit/Features/Documents/Indexer/SearchIndexer+Terms.swift @@ -67,11 +67,11 @@ extension SearchIndexer { var result = [TermCount]() - let document = SKDocumentCreateWithURL(url as CFURL).takeUnretainedValue() + let document = SKDocumentCreateWithURL(url as CFURL).takeRetainedValue() let documentID = SKIndexGetDocumentID(index, document) guard let termVals = SKIndexCopyTermIDArrayForDocumentID(index, documentID), - let terms = termVals.takeUnretainedValue() as? [CFIndex] else { + let terms = termVals.takeRetainedValue() as? [CFIndex] else { return [] } diff --git a/CodeEdit/Features/Documents/Indexer/SearchIndexer.swift b/CodeEdit/Features/Documents/Indexer/SearchIndexer.swift index a5852e3fd3..5b2150c6fa 100644 --- a/CodeEdit/Features/Documents/Indexer/SearchIndexer.swift +++ b/CodeEdit/Features/Documents/Indexer/SearchIndexer.swift @@ -67,7 +67,7 @@ public class SearchIndexer { private(set) lazy var stopWords: Set = { var stopWords: Set = [] if let index = self.index, - let properties = SKIndexGetAnalysisProperties(self.index).takeUnretainedValue() as? [String: Any], + let properties = SKIndexGetAnalysisProperties(self.index).takeRetainedValue() as? [String: Any], let newStopWords = properties[kSKStopWords as String] as? Set { stopWords = newStopWords }