1

Receigen文档和其他来源建议尽快验证您的应用程序的收据,甚至在方法main的早期。

当我在方法中调用 Receigen 生成的代码main时,当应用程序没有 Receipt 时,我会遇到执行中断。

int main(int argc, char *argv[])
{

    @autoreleasepool {

       MyPrefix_CheckReceipt( [[MyReceiptRefreshDelegate alloc] init] );

       return UIApplicationMain(argc, argv, nil, NSStringFromClass([XMAppDelegate class]));
    }
}

调用return UIApplicationMain在 Xcode 7.3.1 中显示此错误消息:

线程 1:EXC_BAD_ACCESS(代码=1,地址=0xe)

将此调用MyPrefix_CheckReceiptmain方法移到我的应用程序委托didFinishLaunchingWithOptions方法的顶部是一种解决方法。EXC_BAD_ACCESS当收据不存在时不会发生错误。

当用户通过 Mac 或 PC 上的 iTunes 应用程序从备份中恢复他们的应用程序时,可能会在现场没有收据。第一次在真正的硬件 iOS 设备上通过 Xcode 执行或从设备中删除应用程序后,开发中总是会出现没有收据的情况。

第二次运行没有出现这样的错误。我确认收据已从假的“沙盒”App Store 成功检索,并且在第二次运行时出现。

所以问题是:为什么 Receigen 代码在没有找到 Receipt 但只有在从该main方法进行验证调用时才会崩溃并崩溃?

4

0 回答 0