我正在尝试扩展我class的async/await功能,但在运行时控制台中出现错误:
SWIFT TASK CONTINUATION MISUSE: query(_:) leaked its continuation!
Run Code Online (Sandbox Code Playgroud)
下面是class我正在尝试添加使用委托的延续:
SWIFT TASK CONTINUATION MISUSE: query(_:) leaked its continuation!
Run Code Online (Sandbox Code Playgroud)
这是我如何使用它:
class LocalSearch: NSObject, MKLocalSearchCompleterDelegate {
private let completer: MKLocalSearchCompleter
private var completionContinuation: CheckedContinuation<[MKLocalSearchCompletion], Error>?
init() {
completer = MKLocalSearchCompleter()
super.init()
completer.delegate = self
}
func query(_ value: String) async throws -> [MKLocalSearchCompletion] {
try await withCheckedThrowingContinuation { continuation in
completionContinuation = continuation
guard !value.isEmpty else {
completionContinuation?.resume(returning: [])
completionContinuation = nil
return
}
completer.queryFragment = …Run Code Online (Sandbox Code Playgroud) 这是错误:
线程 1:“尝试使用在 -collectionView:cellForItemAtIndexPath: 或 UICollectionViewDiffableDataSource 单元格提供程序内创建的注册使单元格出列。每次请求单元格时创建新的注册将阻止重用,并导致创建的单元格在内存中保持不可访问状态在集合视图的生命周期内。应预先创建注册并重复使用。注册:<UICollectionViewCellRegistration:0x60000135b300>”
这是导致错误的文件:
import UIKit
class PetExplorerViewController: UICollectionViewController {
// MARK: - Properties
var adoptions = Set<Pet>()
lazy var dataSource = makeDataSource()
// MARK: - Types
enum Section: Int, CaseIterable, Hashable {
case availablePets
case adoptedPets
}
typealias DataSource = UICollectionViewDiffableDataSource<Section, Item>
// MARK: - Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Pet Explorer"
configureLayout()
applyInitialSnapshots()
}
// MARK: - Functions
func configureLayout() {
let configuration = UICollectionLayoutListConfiguration(appearance: .grouped)
collectionView.collectionViewLayout = UICollectionViewCompositionalLayout.list(using: configuration) …Run Code Online (Sandbox Code Playgroud)