Uygulama içi satın alımım için bir test çalıştırma (ilk kez uygulama satın alımlarında). Ben bu kodun üçüncü satırda EXC_BAD_ACCESS olsun:EXC_BAD_ACCESS, uygulama satın alma testi sırasında
SKPayment *payment = [SKPayment paymentWithProduct:electronicProd];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
if bir düğme için bir IBAction altındadır. electronicPack, SKProduct olarak başlıkta bildirildi. ProductsRequest didReceiveResponse ürünündeki bazı NSLog'ları attı ve ürün istendiğinde (viewDidLoad'da) ve ürünü doğru bir şekilde aldığını ve elektronikPack'de sakladığını gösterdi. DidReceiveResponse sayfasında [[request.products] objectAtIndex: 0] olarak tanımlı electronicPack. Evet evet. Im, nerede ne yapacağını bilmiyorum. Herhangi bir yardım takdir edilir.
GÜNCELLEME: yanlışlıkla fazladan işlem gözlemci lol Sen bir sallanmasını havuzda sistem tarafından sarılır
- (void)viewDidLoad {
//... stuff
SKProduct* electronicProduct = //...
[electronicProduct retain];
//... otherstuff
}
viewDidLoad oluştururken nesneyi tutmak gerekir
:
BuradaAppDelegate
içinde bir örnek, bu fark önce hata var? Her olay bir otomatikleştirme havuzuna sarılır, eğer nesneyi statik init yöntemiyle başlatırsanız, viewDidLoad yöntemi bittikten sonra öğe serbest bırakılır. – andreamazzEğer ben yaptım mı soruyorsun: electronicPack = [SKProduct ayırma] init] ? Bunun cevabı hayır. Eğer senin istediğin şey değilse, o zaman ne dediğinden emin değilim, bu ballgame için biraz yeni. lol –
Tüm bellek yönetimi, özellik şeyler ile çok iyi değilim. ve tüm bunlar. Sadece bir ay kadar süredir programlama yapıyordum ve henüz bu kadar başarılı olamamışlar. Bunu bir deneyin ve bir şey düzeltip düzeltmediğini sorun. DÜZENLEME: self.elec..etc öğelerini uyguladı ve değiştirilmedi. uygulama çöktüğünde hala hata alıyorum –