【问题标题】:App Crashes Converting UIImage to PDF将 UIImage 转换为 PDF 时应用程序崩溃
【发布时间】:2012-10-19 11:12:35
【问题描述】:

Apple 通过此报告拒绝了我的应用:

http://nopaste.me/paste/173567898450806a3c774c4

我无法使用他们提到的相同设备和 iOS 进行复制,即 iPad 3 iOS6。

它们是指将图像转换为 PDF 并通过电子邮件发送的功能。我使用这段代码来做到这一点:

-(IBAction)didPressSaveToPDFButton:(id)sender{

   NSMutableData *pdfData = [NSMutableData data];
   UIGraphicsBeginPDFContextToData(pdfData, imageView.bounds, nil);
   UIGraphicsBeginPDFPage();
   CGContextRef pdfContext = UIGraphicsGetCurrentContext();
   [imageView.layer renderInContext:pdfContext];
   UIGraphicsEndPDFContext();

   NSLog(@"PDF");

   MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
   vc.mailComposeDelegate = self;
   [vc setSubject:@"PDF"];
   [vc addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"mypdf.pdf"];

   [self presentModalViewController:vc animated:YES];
}

是否有人看到报告指出的内容和/或错误在哪里?我看不出有什么问题。

符号化报告:

Last Exception Backtrace:
0   CoreFoundation                  0x35e9729e __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x32d1f97a objc_exception_throw + 26
2   UIKit                           0x327e213c -[UIViewController     presentViewController:withTransition:completion:] + 3760
3   UIKit                           0x32904252 -[UIViewController         presentModalViewController:animated:] + 26
4   MyAppName                           0x0009c5a2 -[ViewController didPressSaveToPDFButton:] (ViewController.m:200)
5   UIKit                           0x327e10a8 -[UIApplication sendAction:to:from:forEvent:] + 68
6   UIKit                           0x327e1130 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 116

【问题讨论】:

  • 您是否对崩溃报告进行了符号化?
  • 这是什么意思?这是我第一次被拒绝,所以我不熟悉这个过程。
  • @Vad 得到第一个拒绝没关系,崩溃日志符号在互联网上被广泛讨论,快速搜索将轻松为您提供熟悉它的好文章。然后,您将拥有应用程序崩溃的代码中的确切位置。

标签: iphone objective-c ios uiimageview uiimage


【解决方案1】:

好吧,既然你没有用符号表示你的崩溃日志,那么很难说出发生了什么。我的猜测是,您的 pdfContext 出现 nil 并且您正尝试在具有 nil 上下文的层中渲染您的 imageView。

我会试试的

 if (pdfContext) {
   [imageView.layer renderInContext:pdfContext];
 }
 else {
   return;
 }

【讨论】:

  • 我想知道这是否与它是单线程和邮件编写器需要稍微延迟打开的事实有关。
猜你喜欢
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
相关资源
最近更新 更多