gpt4 book ai didi

swift - 从闭包中调用 "fulfill"时出错

转载 作者:行者123 更新时间:2023-11-30 12:59:22 26 4
gpt4 key购买 nike

这是我的错误...

Thread 1: EXC_BAD_ACCESS (code=1, address=0x18)

这是我的产品请求代表...

class ProductRequestDelegate : NSObject, SKProductsRequestDelegate {

private var products: ([SKProduct]) -> Void

init(products: @escaping ([SKProduct]) -> Void) {

self.products = products
}

public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {

products(response.products)
}

public func request(_ request: SKRequest, didFailWithError error: Error) {

}
}

这是请求...

fileprivate var productsRequest: SKProductsRequest?

public func getProducts() -> Promise<Set<SKProduct>> {

return Promise { fulfill, reject in

productsRequest?.cancel()

productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)

productsRequest!.delegate = ProductRequestDelegate { products in

self.productsRequest = nil

fulfill(Set(products))
}

productsRequest!.start()
}
}

此调用会导致错误发生...

_ = iAPHelper.getProducts()

有什么想法为什么这不起作用?看来委托(delegate)已被释放。

最佳答案

SKProductsRequest 上的委托(delegate)属性是unowned(unsafe),因此分配给它的对象被释放。 (仪器在打开僵尸后通知我释放。)

因此,我向包含函数 getProducts() 的类添加了对委托(delegate)的引用。并且它有效。

关于swift - 从闭包中调用 "fulfill"时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com