发布的应用程序显示空白屏幕,但不在debugging器中
我有这个应用程序,最初是为iOS 2.x编写的。 我最近需要添加一个小function,并被迫做出的应用程序,幸存了许多iOS升级没有任何问题,符合iOS5。 只有在testing并提交应用程序后,我才从300,000多个用户群获得报告,该应用程序在iOS 4.2.1的第二代iPod Touch上不起作用。 我在第一代iPod touch上进行了testing,而且运行得很好。 有趣的是,现在我终于find了第二代iPod,在设备上的debugging模式下,该应用程序运行良好。 只有当我通过iTunes同步一个AdHoc的时候,我会得到和那些通过App Store下载应用程序相同的症状:一个UIImageView加载一个图像,但几秒钟后,图像就消失了,留下一个空白的屏幕。
什么是最好的方法弄清楚,在代码中哪里出了问题?
谢谢你的帮助
更新:我已经请求苹果帮我在这里。 这是迄今为止相关的相关部分:
“通常,只有在商店或评论期间才会显示的问题是由Xcode在Debug和Release(也就是用于提交给商店的构buildconfiguration)中如何configuration为构build应用程序所导致的。
为了确保您正在testing您提交给App Store的应用程序的确切构build,您可以创build一个存档构build,您可以testing并提交。 在Xcode 4中,产品 – >存档会将你的应用程序的版本存档到pipe理器窗口中。
您可以从Xcode的“Organizer”窗口中以“Sharing …”作为IPA来testing该构build,然后使用iTunes安装IPA。
(只是供参考:“分享…”一个存档的版本,你用iTunes安装是testing应用程序的首选方式,Xcode安装应用程序的方式与App Store稍有不同,这在开发过程中是很好的,因为速度更快。对于最终testing,通过iTunes进行安装最接近用户的体验。)“
和:
“所以我的build议是把你的代码中的断言置于你认为可疑的地方,在你的代码监视进程中放置几个NSLog语句,或许输出像你的UIImageView的帧大小等信息。
虽然我明白,这显然是唯一的出路,但我对这一切的意义有点震惊:
作为一名开发人员,您应该拥有并testing任何设备和操作系统的组合,或者只是将其投放到客户身上,查看出现问题的地方。
我不记得在哪里,但我之前已经听说过这个问题与UIImageView
。 我记得问题是他们在后台线程上实例化UIImage
。 由于NSLog()
影响线程,我可以想象,在debugging模式下,使用日志可以减lessmultithreading的任何影响。 但是,在发布模式下,日志语句被剥离,可能会发生错误。
我遇到了类似的问题。 原来我是混合和匹配的NSManagedObjectContext对象。 我不知道为什么这个工作在debugging器,并跳出来,当我从跳板启动。
我能够使用Xcode中的“Product-> Attach to Process”来debugging我在模拟器中启动的应用程序。
希望能帮助别人。
我有一个类似的问题:在开发中运行良好,但产品/存档/分发/ 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];
在开发中总是在标签中加上Welcome John Smith这样的东西。 在档案文件中总是把欢迎(空)在标签。 注意:NSManagedContextObject是在getTopRecord方法中创build的。
我必须在需要我的aUser的方法中创buildNSManagedObjectContext对象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];
最后,我发现这篇文章有助于理解(?)为什么发生这种情况。 Objective-C当然是C语言。
如果有人知道Xcode或Jetbrain的AppCode或任何其他的iOS IDE中的checkbox,说创build和运行你将发送到苹果的相同的文件,请在这里发展,请让我们知道。 🙂