我按照不同的教程在Swift 2中的iOS应用中检索产品信息。但我无法使其有效: - /
我尽可能简单地编写以下代码,我只是调用requestProductsSimple方法,并且我希望调用productRequest()。运行前我有0错误和0警告。
但输出只显示:
request started
ended
几秒钟后我得到了一个EXEC_BAD_ACCESS。这是代码。我希望有人可以提供帮助。
谢谢:)
import UIKit
import StoreKit
class ViewController: UIViewController {
@IBOutlet var mainView : UIView?
override func loadView() {
super.loadView()
}
override func viewDidLoad() {
super.viewDidLoad()
let shop = IAPHelper()
shop.requestProductsSimple()
print("ended")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
class IAPHelper: NSObject, SKProductsRequestDelegate {
override init() {
}
func requestProductsSimple() {
let productIdentifiers: Set<String> = ["my_product_id"]
let productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
productsRequest.delegate = self
productsRequest.start()
print("request started")
}
func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {
print("received")
}
func request(request: SKRequest, didFailWithError error: NSError) {
print("request failed")
}
}
答案 0 :(得分:1)
由于您的shop
是一个局部变量,因此viewDidLoad
返回后会释放它。这是在异步操作完成之前,然后在尝试调用现在发布的完成方法时出现分段错误。
将shop
移至属性,以便在viewDidLoad
返回后保留强引用