diff --git a/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteEmojisController.swift b/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteEmojisController.swift index 3606a538..3083d8c6 100644 --- a/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteEmojisController.swift +++ b/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteEmojisController.swift @@ -36,8 +36,8 @@ class AutocompleteEmojisController: ViewController { .removeDuplicates() .sink { [unowned self] query in self.searchTask?.cancel() - self.searchTask = Task { - await self.queryChanged(query) + self.searchTask = Task { [weak self] in + await self?.queryChanged(query) } } } diff --git a/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteHashtagsController.swift b/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteHashtagsController.swift index 3d964d1e..674fce4d 100644 --- a/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteHashtagsController.swift +++ b/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteHashtagsController.swift @@ -34,8 +34,8 @@ class AutocompleteHashtagsController: ViewController { .debounce(for: .milliseconds(250), scheduler: DispatchQueue.main) .sink { [unowned self] query in self.searchTask?.cancel() - self.searchTask = Task { - await self.queryChanged(query) + self.searchTask = Task { [weak self] in + await self?.queryChanged(query) } } } diff --git a/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteMentionsController.swift b/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteMentionsController.swift index 0acfc1cd..4272dc5f 100644 --- a/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteMentionsController.swift +++ b/Packages/ComposeUI/Sources/ComposeUI/Controllers/AutocompleteMentionsController.swift @@ -36,8 +36,9 @@ class AutocompleteMentionsController: ViewController { .debounce(for: .milliseconds(250), scheduler: DispatchQueue.main) .sink { [unowned self] query in self.searchTask?.cancel() - self.searchTask = Task { - await self.queryChanged(query) + // weak in case the autocomplete controller is dealloc'd racing with the task starting + self.searchTask = Task { [weak self] in + await self?.queryChanged(query) } } }