- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对“应用内购买”和 Cocos2D 引擎有一个非常奇怪的问题。一切似乎都运行良好,交易也没有问题。但是当我多次打开和关闭我使用“应用内购买”交易的场景时,应用程序崩溃了。有时它会在几分钟后发生。
.m 文件:
在我的初始化函数中:
if ([SKPaymentQueue canMakePayments]) {
productsRequest=[[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObjects: @"xxx.blockads", @"xxx.unlocklevels",nil]];
productsRequest.delegate = self;
[productsRequest start];
} else {
//
}
与“In App”相关的其他功能
-(void) unlock1: (id) sender {
payment = [SKPayment paymentWithProductIdentifier:@"xxx.blockads"];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
-(void) unlock2: (id) sender {
payment = [SKPayment paymentWithProductIdentifier:@"xxx.unlocklevels"];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
SKProduct *validProduct = nil;
int count = [response.products count];
if (count > 0) {
validProduct = [response.products objectAtIndex:0];
} else if (!validProduct) {
}
NSLog(@"Valid products: %@", response.products);
NSLog(@"invalid products: %@", response.invalidProductIdentifiers);
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
break;
case SKPaymentTransactionStatePurchased:
//Something
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
if (transaction.error.code != SKErrorPaymentCancelled) {
NSLog(@"An error encounterd");
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}
崩溃日志:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xd0000008
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x35db9c98 objc_msgSend + 16
1 StoreKit 0x31c77d96 -[SKProductsRequest handleFinishResponse:returningError:] + 38
2 StoreKit 0x31c79086 -[SKRequest _requestFinishedNotification:] + 150
3 Foundation 0x3010f17c _nsnote_callback + 136
4 CoreFoundation 0x31091208 __CFXNotificationPost_old + 396
5 CoreFoundation 0x3102bee4 _CFXNotificationPostNotification + 112
6 Foundation 0x3010c5cc -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
7 AppSupport 0x325ae44e -[CPDistributedNotificationCenter deliverNotification:userInfo:] + 38
8 AppSupport 0x325af77a _CPDNDeliverNotification + 198
9 AppSupport 0x325ae1d0 _XDeliverNotification + 116
10 AppSupport 0x325a4dd0 migHelperRecievePortCallout + 132
11 CoreFoundation 0x31099a90 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
12 CoreFoundation 0x3109b838 __CFRunLoopDoSource1 + 160
13 CoreFoundation 0x3109c606 __CFRunLoopRun + 514
14 CoreFoundation 0x3102cebc CFRunLoopRunSpecific + 224
15 CoreFoundation 0x3102cdc4 CFRunLoopRunInMode + 52
16 GraphicsServices 0x32215418 GSEventRunModal + 108
17 GraphicsServices 0x322154c4 GSEventRun + 56
18 UIKit 0x32795d62 -[UIApplication _run] + 398
19 UIKit 0x32793800 UIApplicationMain + 664
20 ninjaballhd 0x00003b96 main (main.m:13)
21 ninjaballhd 0x00003b68 start + 32
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x3002afbc kevent + 24
1 libdispatch.dylib 0x366ee094 _dispatch_mgr_invoke + 672
2 libdispatch.dylib 0x366ef04a _dispatch_queue_invoke + 86
3 libdispatch.dylib 0x366ee60a _dispatch_worker_thread2 + 190
4 libsystem_c.dylib 0x3624358a _pthread_wqthread + 258
5 libsystem_c.dylib 0x36243bbc start_wqthread + 0
Thread 2:
0 libsystem_kernel.dylib 0x3002a3ec __workq_kernreturn + 8
1 libsystem_c.dylib 0x362436d8 _pthread_wqthread + 592
2 libsystem_c.dylib 0x36243bbc start_wqthread + 0
Thread 3 name: WebThread
Thread 3:
0 libsystem_kernel.dylib 0x30027c00 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x30027758 mach_msg + 44
2 CoreFoundation 0x3109a2b8 __CFRunLoopServiceMachPort + 88
3 CoreFoundation 0x3109c562 __CFRunLoopRun + 350
4 CoreFoundation 0x3102cebc CFRunLoopRunSpecific + 224
5 CoreFoundation 0x3102cdc4 CFRunLoopRunInMode + 52
6 WebCore 0x32ccb37a RunWebThread(void*) + 378
7 libsystem_c.dylib 0x3624230a _pthread_start + 242
8 libsystem_c.dylib 0x36243bb4 thread_start + 0
Thread 4 name: AURemoteIO::IOThread
Thread 4:
0 libsystem_kernel.dylib 0x30027c00 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x30027758 mach_msg + 44
2 AudioToolbox 0x32308824 AURemoteIO::IOThread::Run() + 80
3 AudioToolbox 0x3230e342 AURemoteIO::IOThread::Entry(void*) + 2
4 AudioToolbox 0x3224348a CAPThread::Entry(CAPThread*) + 138
5 libsystem_c.dylib 0x3624230a _pthread_start + 242
6 libsystem_c.dylib 0x36243bb4 thread_start + 0
最佳答案
这很可能是内存管理问题。 handleFinishResponse:returningError:
可能是对象的内部方法,由于您的内存管理错误而被释放。
在收到来自 IAP 的响应之前,您释放处理应用内购买的 Controller 。由于来自 Internet 连接的延迟响应,选择器被发送到已释放的对象。
还有一个question在 Stackoverflow 上出现完全相同的异常,原因是内存管理问题。
使用NSZombieEnabled检查这是否是异常的原因
来自 cocoadev.com:
关于ios - SKProductsRequest 导致崩溃 - Cocos2d 和应用内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848161/
我正在尝试使用 Spark 从 Cassandra 读取数据。 DataFrame rdf = sqlContext.read().option("keyspace", "readypulse
这是代码: void i_log_ (int error, const char * file, int line, const char * fmt, ...) { /* Get erro
我必须调试一个严重依赖 Gtk 的程序。问题是由于某些原因,在使用 GtkWindow 对象时开始出现许多运行时警告。问题是,即使 Gtk 提示严重错误,它也不会因这些错误而中止。我没有代码库的更改历
我正在尝试从已有效编译和链接的程序中检索二进制文件。我已经通过 GL_PROGRAM_BINARY_LENGTH 收到了它的长度。该文档说有两个实例可能会发生 GL_INVALID_OPERATION
我有一个托管在 Azure 环境中的服务。我正在使用控制台应用程序使用该服务。这样做时,我得到了异常: "The requested service, 'http://xxxx-d.yyyy.be/S
我有以下代码,它被 SEGV 信号杀死。使用调试器表明它被 main() 中的第一个 sem_init() 杀死。如果我注释掉第一个 sem_init() ,第二个会导致同样的问题。我试图弄清楚是什么
目前我正在编写一个应用程序(目标 iOS 6,启用 ARC),它使用 JSON 进行数据传输,使用核心数据进行持久存储。 JSON 数据由 PHP 脚本通过 json_encode 从 MySQL 数
我对 Xamarin.Forms 还是很陌生。我在出现的主页上有一个非常简单的功能 async public Task BaseAppearing() { if (UserID
这是我的代码的简化版本。 public class MainActivity extends ActionBarActivity { private ArrayList entry = new Arr
我想弄明白为什么我的两个 Java 库很难很好地协同工作。这是场景: 库 1 有一个类 A,其构造函数如下: public A(Object obj) { /* boilerplate */ } 在以
如果网站不需要身份验证,我的代码可以正常工作,如果需要,则在打印“已创建凭据”后会立即出现 EXC_BAD_ACCESS 错误。我不会发布任何内容,并且此代码是直接从文档中复制的 - 知道出了什么问题
我在使用 NSArray 填充 UITableView 时遇到问题。我确信我正在做一些愚蠢的事情,但我无法弄清楚。当我尝试进行简单的计数时,我得到了 EXC_BAD_ACCESS,我知道这是因为我试图
我在 UITableViewCell 上有一个 UITextField,在另一个单元格上有一个按钮。 我单击 UITextField(出现键盘)。 UITextField 调用了以下方法: - (BO
我有一个应用程序出现间歇性崩溃。崩溃日志显示了一个堆栈跟踪,这对我来说很难破译,因此希望其他人看到了这一点并能为我指出正确的方向。 基本上,应用程序在启动时执行反向地理编码请求,以在标签中显示用户的位
我开发了一个 CGImage,当程序使用以下命令将其显示在屏幕上时它工作正常: [output_view.layer performSelectorOnMainThread:@selector(set
我正在使用新的 EncryptedSharedPreferences以谷歌推荐的方式上课: private fun securePrefs(context: Context): SharedPrefe
我有一个中继器,里面有一些控件,其中一个是文本框。我正在尝试使用 jquery 获取文本框,我的代码如下所示: $("#").click(function (event) {}); 但我总是得到 nu
在以下场景中观察到 TTS 初始化错误,太随机了。 已安装 TTS 引擎,存在语音集,并且可以从辅助功能选项中播放示例 tts。 TTS 初始化在之前初始化和播放的同一设备上随机失败。 在不同的设备(
maven pom.xml org.openjdk.jol jol-core 0.10 Java 类: public class MyObjectData { pr
在不担心冲突的情况下,可以使用 MD5 作为哈希值,字符串长度最多为多少? 这可能是通过为特定字符集中的每个可能的字符串生成 MD5 哈希来计算的,长度不断增加,直到哈希第二次出现(冲突)。没有冲突的
我是一名优秀的程序员,十分优秀!