iphone - 两部 iPhone 的故事 - 一部崩溃,一部没有

标签 iphone objective-c ios

<分区>


想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。

关闭 10 年前

我的一位用户报告说,当他们从我的应用程序导出文件时,MailComposer 出现,然后卡住。届时,他们必须完全关闭该应用程序。他们报告说等待一个小时没有帮助。此用户使用的是运行 iOS 6.0.1 的 iPhone 4。

因此,我将从 App Store 下载的相同版本的应用程序启动到运行 iOS 6.0.1 的 iPhone4。当我导出文件时,一切正常,我可以导出轨道。

接下来,我将我导出的文件发给他,以确保我们导出的是同一个文件。当他导入文件,然后尝试导出它时,同样的事情发生了。当 MailComposer 屏幕出现时,他的手机又一次死机了。

我不知道如何调试这个问题。我能做什么?

编辑 2:用户报告删除并重新安装该应用程序可以解决问题。我仍然想知道潜在的问题可能是什么。

编辑:这是我的代码:

MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
if (gpsFilePath) {
  [controller addAttachmentData:[NSData dataWithContentsOfFile:gpsFilePath] mimeType:@"text/gpx" fileName:[self cleanFileName]];
  [controller addAttachmentData:[NSData dataWithContentsOfFile:kmlFilePath] mimeType:@"text/kml" fileName:[self cleanKMLFileName]];
}
[controller setSubject:subject];
[controller setMessageBody:body isHTML:YES];   
[[MAP_APP_DELEGATE mainController] presentModalViewController:controller animated:YES];

最佳答案

有趣的问题。如果它没有崩溃,只是在某个屏幕上停滞不前,那么您可能在某个地方遇到了无限循环。

以下是我会探索的一些途径(但其中大部分假设用户愿意付出大量努力来帮助您调试此问题,这不太可能):

  • 您上面的代码是在主线程中运行的吗?

  • 尝试使用更小或更简单的数据文件,您也许能够隔离导致此问题的某些类型的数据。

  • 让用户向您发送他的数据,尝试用它进行重现。

  • 让用户成为您的 Beta 测试员之一。您必须获取他的 UDID 并将其添加到您的配置文件中。我建议使用 TestFlight 轻松地为您的 Beta 测试人员获取测试版本。它们允许您查看用户 session 中的崩溃日志和其他有用的统计信息。您还可以设置“检查点”以查看您的用户在卡住之前走了多远。

  • 为该用户提供一个附件功能被注释掉或其他各种部分被注释掉的构建,以至少查明导致卡住的原因。

  • 与 CaptureRecord 库集成,该库可以录制用户体验的视频,这样您就可以真正看到他所看到的内容。它会保存一段视频,然后他可以将其发送给您。可以为您提供有关正在发生的事情的更好线索。

  • 如果他们有 Mac,他们可以安装 Xcode,只是为了使用 Organizer 发送给您的控制台输出。否则,请参阅下一个想法。

  • 在您的测试版本中,实现一个可以保存到设备上文本文件的应用内控制台。然后可以使用 iExplorer 获取它,由用户阅读,然后通过电子邮件发送,或以其他方式发送给您。基本上,围绕 NSLog 实现一个包装器,它还将所有输出保存到文本文件或字符串,并将其保存到磁盘,或者至少可以显示给用户。这将模拟您在 Xcode 中的控制台输出。您可能需要一个管理界面才能打开/关闭它,因为它可能会降低您的应用程序的速度。确保您的应用程序中有足够的调试输出。如果它是一个无限循环,您会看到一行永远重复。否则,您至少可以看到卡住前最后一行代码是什么。

  • 确保实现邮件编写器委托(delegate)的所有功能,并至少将它们记录到控制台输出。

希望对你有帮助

关于iphone - 两部 iPhone 的故事 - 一部崩溃,一部没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260759/

上一篇:ios - 如何从字典的 NSArray 创建 indexPath

下一篇:objective-c - 字符串中的日期不起作用

相关文章:

objective-c - 为了符合 MVC,我应该如何在 Cocoa 应用程序中进行数据库调用?

ios - 无法通过 -pathForResource 方法检索 info.plist 数据?

iphone - iPhone 4S上的数字音频处理

ios - 如何动态格式化数字以在 UITextField 条目中包含逗号?

iphone - 创建一个调度方法以在 Objective C (Xcode) 中以 7 天轮换显示自定义标签

c++ - pthread C++ 中的 Obj-C performSelector OnThread

ios - 如何在 UITextField 中允许使用表情符号

ios - 加载多个页面后,iOS 上的视频失败

ios - NSOperationQueue 的取消在 swift 中不起作用

iphone - iphone模拟器的亮度可以调节吗?