Tech

Storekit 에서 결제 시도때 EXC_BAD_ACCESS 뜰때

가루군# 2017. 2. 2. 15:31

앱에서 Storekit 을 이용해서 iAP을 구현하고있는데.


최종 결제 처리를 공용 컨트롤러+뷰로 구현하는게 깔끔할것 같아서 (product_id 만 넘기고 서버로 api 통신해서 처리하는..) 구현중인데


결제를 취소하거나 결제가 끝나면 viewcontroller 를 dismiss 을 해서 뷰를 날리는데 어째 그다음 결제가 실행될 시점에서 BAD_EXEC_ACCESS 로 앱이 뻗어버린다.


            let pay = SKPayment(product: p)

            SKPaymentQueue.default().add(self)

            SKPaymentQueue.default().add(pay)



저기서 맨 하단 SKPayment Product add 부분.

찾아보니 SKPaymentTransactionObserver 가 제대로 안사라져서 그렇다고.

나는 뷰를 분리하였으니.

override func viewDidDisappear(_ animated: Bool) {

        super.viewDidDisappear(animated)

        SKPaymentQueue.default().remove(self)

    }



뷰가 사라질때 remove 하니까 별문제가 없어졌다.