6

所以我有一个应用程序两次被应用商店拒绝,我真的需要一些帮助!

它已被拒绝,因为看门狗定时器在第一次打开时强制它退出。但是,我无法在我的任何设备上重现这一点。使用 xcode 构建设备确实需要很长时间(我知道从 xcode 构建时看门狗会断开连接)。但我有几个问题可能会帮助我解决这个问题。

  1. 看门狗是否只考虑didFinishLaunchingWithOptions:它调用的其他方法?

  2. 程序使用的框架数量与它有关系吗?如果是这样,11 个框架是否太多了?

  3. 将应用程序安装到设备后,我拔下所述设备是否重新启用了看门狗计时器?

  4. 还有哪些其他可以添加到看门狗定时器的东西?

苹果说另一种可能性可能是Another possibility could be a missing entitlement.有人可以解释一下这是什么意思吗,我以前在我的其他应用程序中没有看到过这种情况,但我认为这可能是新的东西?它是否必须安装在应用商店的所有应用上?

第一秒的时间配置文件

在此处输入图像描述

4

2 回答 2

4

您阻塞 UI 线程的时间过长。要解决这个问题,首先你需要弄清楚什么代码花了这么长时间。分析您的应用程序可能是值得的。请注意,模拟器不模拟设备,它只模拟 API。它的运行速度可能比实际设备快得多,因为您的计算机比 iPhone 更强大。尝试单击并按住RunXcode 的左上角,然后选择Profile. 选择Time Profiler并运行几秒钟。停止分析器以分析函数调用中的时间。请注意,您可能需要更深入地挖掘,找到一些教程或书籍才能真正理解分析。

当您知道哪些部件运行缓慢时。你可以把它们放到一个线程中。简单的方法是使用Grand Central Dispatch。要开始使用,请访问本教程。您可以跳过前半部分并专注于实际的线程块。API是dispatch_queue_create和。dispatch_asyncdispatch_release

这将解锁您的 UI。

于 2012-04-16T13:49:07.270 回答
3

你做了很多处理吗

application:didFinishLaunchingWithOptions,
applicationDidBecomeActive,
applicationDidEnterBackground,
applicationWillResignActive or 
applicationWillTerminate? 

多文件访问、加载/保存数据、同步网络访问等事情可能会导致您的应用程序在启动或用户退出时冻结,并可能导致看门狗杀死您的应用程序。

这个 Apple Technical note 建议看门狗只查看启动、暂停、恢复和终止用户界面事件,所以我想说你应该先查看这些,然后发回一些关于你的应用程序在方法中所做的更多细节以上所列。 http://developer.apple.com/library/ios/#qa/qa1693/_index.html

11个框架很好。我在应用程序中使用了 11 没问题。

如果您通过点击主屏幕上的图标启动应用程序,那么看门狗计时器将处于活动状态并监控您的应用程序。如果您通过在 Xcode 中点击运行或调试来启动应用程序,那么看门狗将不会监控您的应用程序。

于 2012-04-16T13:24:05.923 回答