iPhone应用程序崩溃(仅限iOS4)
我的iPhone应用程序在安装后第一次运行时偶尔会崩溃。此后,每次我尝试运行该应用程序时,它都会保留在启动屏幕上,甚至是黑屏上,直到它最终消失。我必须重新启动设备才能让应用程序正常工作。在这之后,它每次都能正常工作。OS3代码和OS4之间唯一的变化是属性“UIApplicationExitsOnSuspend”,强制应用程序每次重新加载,而不是挂起。任何帮助都会很好 以下是两段代码片段:iPhone应用程序崩溃(仅限iOS4),iphone,objective-c,ipad,ios4,Iphone,Objective C,Ipad,Ios4,我的iPhone应用程序在安装后第一次运行时偶尔会崩溃。此后,每次我尝试运行该应用程序时,它都会保留在启动屏幕上,甚至是黑屏上,直到它最终消失。我必须重新启动设备才能让应用程序正常工作。在这之后,它每次都能正常工作。OS3代码和OS4之间唯一的变化是属性“UIApplicationExitsOnSuspend”,强制应用程序每次重新加载,而不是挂起。任何帮助都会很好 以下是两段代码片段: - (void)applicationDidFinishLaunching:(UIApplication *
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
taskListViewController = [[TaskListViewController alloc] initWithNibName:@"TaskListView" bundle:nil];
taskListViewController.managedObjectContext = self.managedObjectContext;
[taskListViewController setAppDefaults];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:taskListViewController];
[taskListViewController release];
navController.navigationBar.tintColor = [UIColor blackColor];
[window addSubview:[navController view]];
[window makeKeyAndVisible];
}
上述其他方法:
[taskListViewController setAppDefaults]
[self insertCheck];
setAppDefaults-枚举设置包,如果用户尚未在PEReferences中设置默认值,则将默认值应用于NSUserDefaults
insertCheck-在db上执行一些查询,以确保音频录制的文件完整性,但在这种情况下,由于这是第一次加载应用程序,因此不会执行任何操作
更新:
我已经注释掉了额外的方法调用(上面两个),但仍然存在问题
我在苹果开发者论坛上发现一些人也有同样的问题,但没有解决方案。一个回复来自一个有相同问题的用户,但该应用程序确实在应用商店中获得了批准
谢谢Sj你看过日志文件了吗 如果您插入iPhone,加载organizer(Windows->organizer in XCode)并选择设备日志,则可以从iPhone上复制它们 如果您看到应用程序崩溃时的日志,它应该包括调用堆栈(其中应该包括导致其崩溃的函数)
或者,可能是您在启动时被困在某些代码运行中,如果您的应用程序没有及时启动(在30秒内IIRC),iOS会将其杀死。在没有managedObjectContext的情况下尝试,看看您是否仍在崩溃。当你崩溃时,日志上写着什么?是否出现内存异常?如果在应用程序崩溃时调试应用程序,则应获得堆栈跟踪,该跟踪将显示应用程序崩溃的行
如果您可以提供堆栈跟踪,那么查找崩溃原因就容易多了。它似乎没有任何关于应用程序的崩溃日志。谢谢。我还注意到,卸载应用程序并在不重新启动设备的情况下重新安装它并不能解决问题!再次感谢。您可能希望编辑您的帖子,以包含
应用程序的IDFinishLaunching
和viewDidLoad
方法中发生的事情的代码。另外,请确保您没有任何数据格式字符串错误的nslog
,这些字符串可能会导致崩溃,而不会显示任何错误消息。您的窗口加载看起来正常,如果不是由于您的用户默认值,开始通过数据库检查代码或初始获取结果进行调试。我担心当它崩溃时,它还没有到达应用程序的入口点(代码中),因此根本不获取任何崩溃日志。谢谢-Sj
[taskListViewController setAppDefaults]
[self insertCheck];