Ho avuto problemi nell'implementare InAppPurchase. La mia implementazione dell'acquisto è in modal view controller (AppUpgradeViewController), che presento da un'altra vista modale. Lo faccio in questo modo:iPhone - SKProductsRichiesta e "messaggio inviato all'istanza deallocata"
AppUpgradeViewController * appUpgradeViewController = [[AppUpgradeViewController alloc] init];
appUpgradeViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
appUpgradeViewController.delegate = self;
[self presentModalViewController:appUpgradeViewController animated:YES];
[appUpgradeViewController release];
Poi, a mio avviso di aggiornamento faccio la seguente:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
NSSet *productIdentifiers = [NSSet setWithObject:kInAppPurchaseProUpgradeProductId];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[productsRequest start];
Poi ho implementato
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
dove faccio:
[self.productsRequest release];
e quindi ho altri metodi richiesti.
Il problema è quando mostro modali, e rapidamente respingerlo poi dopo pochi secondi ho ottenuto il seguente su console (ho acceso NSZombieEnabled):
*** -[AppUpgradeViewController respondsToSelector:]: message sent to deallocated instance 0x2e91f0
Suppongo che sia qualcosa con la richiesta del prodotto, ma non so come eseguire il debug o risolvere il problema. Sembra che la risposta alla richiesta arrivi a questo controller subito dopo che è stato eliminato (e deallocato), ma non so come impedirgli di ricevere messaggi dopo il respingimento/dealloc. Grazie per l'aiuto!
Ho lo stesso problema, ma nessuna delle soluzioni seguenti funziona per me. Ho abilitato ARC. Eventuali suggerimenti? – mvb