Ошибка CGContextDrawPDFPage – Сбой приложения

Когда я анализирую свое приложение с помощью инструментов, я узнал, что данные, выделенные CGContextDrawPDFPage , не будут немедленно CGContextDrawPDFPage . CGContextDrawPDFPage приложения из-за CGContextDrawPDFPage .

введите описание изображения здесь

введите описание изображения здесь

Привет, вот мой код для рисования pdf в CATiledlayer

  - (void)drawLayer:(CATiledLayer *)layer inContext:(CGContextRef)context { if (_PDFPageRef == nil) { return; } CGPDFPageRef drawPDFPageRef = NULL; CGPDFDocumentRef drawPDFDocRef = NULL; @synchronized(self) // Briefly block main thread { drawPDFDocRef = CGPDFDocumentRetain(_PDFDocRef); if( _PDFPageRef != (__bridge CGPDFPageRef)([NSNull null]) ) drawPDFPageRef = CGPDFPageRetain(_PDFPageRef); else return; } //CGContextSetRGBFillColor(context, 0.0f, 0.0f, 0.0f, 0.0f); //CGContextFillRect(context, CGContextGetClipBoundingBox(context)); if (drawPDFPageRef != NULL) // Render the page into the context { CGFloat boundsHeight = viewBounds.size.height; if (CGPDFPageGetRotationAngle(drawPDFPageRef) == 0) { CGFloat boundsWidth = viewBounds.size.width; CGRect cropBox = CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFCropBox); int pageRotation = CGPDFPageGetRotationAngle(drawPDFPageRef); CGSize pageVisibleSize = CGSizeMake(cropBox.size.width, cropBox.size.height); if ((pageRotation == 90) || (pageRotation == 270) ||(pageRotation == -90)) { pageVisibleSize = CGSizeMake(cropBox.size.height, cropBox.size.width); } float scaleX = boundsWidth / pageVisibleSize.width; float scaleY = boundsHeight / pageVisibleSize.height; float scale = scaleX < scaleY ? scaleX : scaleY; // Offset relative to top left corner of rectangle where the page will be displayed float offsetX = 0; float offsetY = 0; float rectangleAspectRatio = boundsWidth / boundsHeight; float pageAspectRatio = pageVisibleSize.width / pageVisibleSize.height; if (pageAspectRatio < rectangleAspectRatio) { // The page is narrower than the rectangle, we place it at center on the horizontal offsetX = (boundsWidth - pageVisibleSize.width * scale) / 2; } else { // The page is wider than the rectangle, we place it at center on the vertical offsetY = (boundsHeight - pageVisibleSize.height * scale) / 2; } CGPoint point = CGPointMake(offsetX, offsetY); //CGRect cropBox = CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFCropBox); int rotate = CGPDFPageGetRotationAngle(drawPDFPageRef); //CGContextSaveGState(context); // Setup the coordinate system. // Top left corner of the displayed page must be located at the point specified by the 'point' parameter. CGContextTranslateCTM(context, point.x, point.y); // Scale the page to desired zoom level. CGContextScaleCTM(context, scale , scale); // The coordinate system must be set to match the PDF coordinate system. switch (rotate) { case 0: CGContextTranslateCTM(context, 0, cropBox.size.height); CGContextScaleCTM(context, 1, -1); break; case 90: CGContextScaleCTM(context, 1, -1); CGContextRotateCTM(context, -M_PI / 2); break; case 180: case -180: CGContextScaleCTM(context, 1, -1); CGContextTranslateCTM(context, cropBox.size.width, 0); CGContextRotateCTM(context, M_PI); break; case 270: case -90: CGContextTranslateCTM(context, cropBox.size.height, cropBox.size.width); CGContextRotateCTM(context, M_PI / 2); CGContextScaleCTM(context, -1, 1); break; } // The CropBox defines the page visible area, clip everything outside it. CGRect clipRect = CGRectMake(0, 0, cropBox.size.width, cropBox.size.height); CGContextAddRect(context, clipRect); CGContextClip(context); CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); CGContextFillRect(context, clipRect); CGContextTranslateCTM(context, -cropBox.origin.x, -cropBox.origin.y); CGContextSetInterpolationQuality(context, kCGInterpolationHigh); // CGContextSetInterpolationQuality(context, kCGInterpolationMedium); CGContextSetRenderingIntent(context, kCGRenderingIntentDefault); if(context != nil && context != (__bridge CGContextRef)([NSNull null])) { CGContextDrawPDFPage(context, drawPDFPageRef); //CGContextRestoreGState(context); } } else // Use CGPDFPageGetDrawingTransform for pages with rotation (AKA kludge) { CGContextTranslateCTM(context, 0.0f, boundsHeight); CGContextScaleCTM(context, 1.0f, -1.0f); CGContextConcatCTM(context, CGPDFPageGetDrawingTransform(drawPDFPageRef, kCGPDFCropBox, viewBounds, 0, true)); } //CGContextDrawPDFPage(context, drawPDFPageRef); } CGPDFPageRelease(drawPDFPageRef); // Cleanup CGPDFDocumentRelease(drawPDFDocRef); } 

One Solution collect form web for “Ошибка CGContextDrawPDFPage – Сбой приложения”

Это по дизайну. Чтобы обеспечить быстрый повторный розыгрыш, CGPDFDocumentRef кэширует ресурсы страницы.

Единственный способ очистить этот кеш – освободить и повторно открыть CGPDFDocumentRef.

  • Как протестировать сборки на iOS 5 и iOS 4 одновременно
  • Как подключить 3 UIButton к одной розетке
  • Изменение размера UITextView при открытии клавиатуры с автоматическим расположением
  • Почему Xcode GM кандидат 2 продолжает сбой при отладке быстрого кода?
  • Настройки Xcode iOS для симулятора> Bluetooth просто вращается и не включается
  • Представление viewController на SKScene
  • Карфаген и GoogleMap
  • MonoTouch <-> Исключение статической библиотеки: не удалось загрузить NIB в комплекте
  • Метод запуска SKAction с аргументом?
  • Как обнаружить Wi-Fi или уровень сигнала 3G в iOS?
  • Странная проблема из-за изменения системных часов
  • Interesting Posts

    iOS Build Сбой при компиляции с проблемой «не удалось найти подходящее устройство для типа SimDeviceType»

    Качество изображения совместного изображения

    Facebook подключить объекты статуса графика имеют комментарии, ограниченные 25

    Тест-тест пользовательского интерфейса не показывает охват кода

    Popover не находится на кнопке

    Приложение UITabbar с разными ориентациями

    Xcode 4.2 iOS Пустое приложение и раскадровки

    iOS Получить объекты из CoreData, отсортированные по первичному ключу

    Ослабление / пауза комплекта спрайтов

    MKMapView mapTypes

    Растровое изображение, вызывающее утечку памяти на устройстве

    Как повысить стабильность и точность данных с помощью карданного маякового устройства для внутреннего позиционирования?

    Как сохранить представление UIImage и текст внутри него на диск

    Что означает Unrestricted Web Access в iTunes Connect

    «CGFloat» не конвертируется в «Double» ошибку в SWIFT (iOS)

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.