适用于iPad 1但不适用于iPad 2的通用应用

时间:2011-06-14 15:31:52

标签: iphone objective-c cocoa-touch ipad

首先,我想说的是,我知道我的问题可能过于含糊,无法回答,可能会被关闭/投票。我只是希望在可能的解决方案上有一些鼓舞人心的大脑风暴。

以下是故事:

我的应用程序在iPad 2上崩溃了,但在iPad 1上没有崩溃。我已经修复了与unarchiving nib相关的崩溃,现在我有一个非常奇怪的问题 - 我的通用应用程序仍然运行没有任何问题的第一代iPad与iOS 4.2.1和4.3.3,但不是(部分/全部?)iPads 2和4.3.3。不幸的是,我无法访问带有iOS< 2的iPad 2。 4.3.3进一步测试并缩小问题范围。

我的应用使用presentModalViewController显示主屏幕。我的模态VC是MGSplitViewController(它模仿原生UISplitViewController并增强其功能)。当我的VC出现时,只显示“根视图”,“详细视图”的屏幕剩余部分只是黑色和空白,但控制器已加载并处于活动状态(打印调试日志等)。

所以在我可以访问的iPad 2上,它无法正确显示详细视图,但是我从一位用户那里听说他的iPad 2(iOS 4.3.3)都没问题。无论iOS版本如何,应用程序在iPhone / iPod上也可正常运行,因此我认为它仅与我的通用应用程序的iPad代码相关。

我认为显示视图可能是更普遍的问题。我试图阅读我的详细视图的view属性,这应该强制显示视图,但它没有帮助。它也可能与IB的东西有关(最初的nib unarchiving只在iPad 2上崩溃了吗?),但我认为在IB中一切都正常了......

任何人都有任何想法如何调查这个问题?

编辑: BTW:我的iPad 2给了我很多时间,因为它经常丢弃Wi-Fi连接。其他人也在报告这种“特征”。可能是我的iPad 2出了问题吗?

EDIT2:该应用也未在iOS 3.2,4.2和4.3.3模拟器(通过XCode 4)上正确显示,但通过Xcode 3在iOS 3.2,4.2模拟器上正确显示。奇怪,不是吗?

2 个答案:

答案 0 :(得分:1)

  

任何人都有任何想法如何调查这个问题?

如果你对一个有些模糊的问题稍微模糊一点,那么是的,我确实有一个想法。

为了解决这样的问题,问题领域的二分是一个很好的方法:

  • 您确定了一般问题区域。你的情况可能是presentModalViewController吗?
  • 然后大约有问题的代码的一半,你设置一个断点/写一个消息到一个日志文件/播放声音/发送邮件/推文/无论如何验证你的代码已经走了这么远没有崩溃
  • 运行它,查看您的消息是否已生成。
  • 如果它已经生成,问题不在上半部分,所以它必须在下半部分(识别问题区域末尾的日志消息也很有用,只是为了确保崩溃实际上发生在那之前)。
  • 另一方面,如果没有日志消息的痕迹,那么崩溃必须发生在上半部分,并且您可以排除代码的后半部分以解决此特定问题。

现在,您通过将断点/日志消息设置为刚刚识别出的罪魁祸首的一半来重复算法。

重复直到找到问题为止。它不需要多次迭代。

当然,崩溃可能是由于某个变量存储在上一步或另一种方法中,但现在你知道在哪里看。

答案 1 :(得分:0)

最初由于取消归档nib,应用程序崩溃了。我不记得确切的崩溃输出,但对我来说很奇怪,在具有相同操作系统版本的iPad 1上正确地取消了相同的笔尖,所以我怀疑问题在于xib文件...我重新创建了xib从头开始仔细地路由一切 - bam! - 它开始在iPad 1和iPad 2上工作!为什么有些笔尖在运行不同硬件的同一个操作系统上没有以相同的方式取消存档?