我有这个应用程序,最初是为iOS 2.x编写的。 我最近需要添加一个小功能,并被迫制作应用程序,幸存了许多iOS升级,没有任何问题,iOS5兼容。 只有在测试并提交应用程序后,我才能收到来自300.000+用户群的报告,该应用程序无法在iOS 4.2.1的第二代iPod Touch上运行。我在第一代iPod touch上测试过,运行得很好。 有趣的是,现在我终于在设备上的调试模式下找到了一个第二代iPod,该应用程序运行正常。只有当我通过iTunes同步AdHoc时,我才能获得与通过App Store下载应用程序的人相同的症状:UIImageView加载图像,但几秒钟后,图像就会消失,留下一个空白屏幕。 / p>
最好的方法是找出代码出错的地方?
感谢您的帮助
更新:我已经要求Apple帮助我了。到目前为止这是通信的相关部分:
“通常只出现在商店或审核期间的问题是由于Xcode配置为在Debug vs Release中构建应用程序的差异(也就是用于提交到商店的构建配置)的差异造成的。
为了确保您正在测试您提交到App Store的应用的完全版本,您可以创建一个Archived版本,您可以测试并提交。在Xcode 4中,Product - >存档会将您的应用内容存档到管理器窗口中。
您可以通过“共享...”测试该版本,将其作为IPA,从Xcode中的管理器窗口,然后使用iTunes安装IPA。
(仅供参考:“分享...”您使用iTunes安装的存档版本是测试应用程序的首选方式.Xcode以与App Store略有不同的方式安装应用程序。这在开发期间很好,因为它是但是对于最终测试,通过iTunes安装最接近用户体验。)“
和
“所以我的建议是将断言置于你认为”可疑“的代码中的位置。在代码监视进度中放置几个NSLog语句,并输出像UIImageView的帧大小等信息。”
虽然我明白这显然是唯一的方法,但我对这一切的含义感到有些震惊:
作为开发人员,您应该拥有并测试任何设备和操作系统的组合,或者只是将它扔给您的客户,看看哪里出了问题。
答案 0 :(得分:1)
我不记得在哪里,但我之前已经用UIImageView
听说过这个问题。我记得问题是他们在后台线程上实例化UIImage
。由于NSLog()
影响线程,我可以想象在使用日志的调试模式下,可以减轻多线程的任何影响。但是在发布模式下,日志语句被剥离,可能会发生错误。
答案 1 :(得分:1)
我遇到了类似的问题。事实证明我正在混合和匹配NSManagedObjectContext对象。我不知道为什么这在调试器中起作用,并且当我从跳板启动时坏了。
我能够通过在Xcode中使用“Product-> Attach to Process”来调试我在模拟器中启动的应用程序。
希望能帮助别人。
答案 2 :(得分:0)
我遇到了类似的问题:在开发中运行良好,但产品/存档/分发/ Ad Hoc ipa文件无法正常运行。感谢@CornPuff,我开始深入挖掘我的CoreData内容并解决它:
我有一些像这样的代码:
dbMethods * myDbMethods = [[dbMethods alloc] init];
aUser *local_db_user = [myDbMethods getTopRecord];
if (local_db_user != nil) {
lbl_user_name.text = [NSString stringWithFormat:@"Welcome %@", local_db_user.user_name];
在开发过程中,总是会在标签中加入欢迎John Smith这样的东西。在Archive文件中,始终将Welcome(null)放在标签中。注意:NSManagedContextObject是在getTopRecord方法中创建的。
我必须在需要我的aUser的方法中创建NSManagedObjectContext对象myDb;将它发送到我现在称之为getTopRecordSafe
的方法NSManagedObjectContext *myDb = [[[dbManager alloc] init] getManagedObjectContext];
dbMethods * myDbMethods = [[dbMethods alloc] init];
aUser *local_db_user = [myDbMethods getTopRecordSafe: myDb];
if (local_db_user != nil) {
lbl_user_name.text = [NSString stringWithFormat:@"Welcome %@", local_db_user.user_name];
最后,我发现this article有助于理解(?)为什么会发生这种情况。 Objective-C当然是一种C语言。
如果有人知道Xcode或Jetbrain的AppCode或任何其他iOS IDE中的复选框,说创建并运行您将发送给Apple的同一文件,请在开发中让我们知道。 :-)