从闭包中调用“完成”时出错
Posted
技术标签:
【中文标题】从闭包中调用“完成”时出错【英文标题】:Error calling "fulfill" from closure 【发布时间】:2016-10-13 18:32:33 【问题描述】:这是我的错误...
线程 1:EXC_BAD_ACCESS(代码=1,地址=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()
任何想法为什么这不起作用?似乎委托已解除分配。
【问题讨论】:
【参考方案1】:SKProductsRequest
的委托属性是unowned(unsafe)
,因此分配给它的对象被释放。 (仪器在启动僵尸后通知我释放。)
所以,我添加了对包含函数getProducts()
的类的委托的引用。它有效。
【讨论】:
以上是关于从闭包中调用“完成”时出错的主要内容,如果未能解决你的问题,请参考以下文章