调用错误"履行"从关闭

时间:2016-10-13 18:32:33

标签: swift storekit promisekit

这是我的错误......

  

线程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 个答案:

答案 0 :(得分:0)

SKProductsRequest上的委托属性为unowned(unsafe),因此分配给它的对象已取消分配。 (仪器告诉我在打开僵尸后重新分配。)

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