LeavesCache.m在模拟器上工作,但不在设备上

这是我第一次发表,所以请忍受我。 我一直在网站后search网站,我似乎无法find任何已经解决了这个问题。 如果有人能回答我会很高兴。

LeavesCache.m去年被修改,如果没有错误,以适应ios 7我认为。

代码在下面,但是我收到一个EXC_BAD_ACCESS return pageImage.CGImage

我改变它return (__bridge CGImageRef)(pageImage)但现在我的网页出来空白,即使它打印正确的页面索引。 请帮忙!

 CGImageRef)cachedImageForPageIndex:(NSUInteger)pageIndex { NSNumber *pageIndexNumber = [NSNumber numberWithInt:pageIndex]; UIImage *pageImage; @synchronized (self.pageCache) { pageImage = [self.pageCache objectForKey:pageIndexNumber]; } if (!pageImage) { CGImageRef pageCGImage = CGImageRetain([self imageForPageIndex:pageIndex]); if (pageCGImage) { pageImage = [UIImage imageWithCGImage:pageCGImage]; @synchronized (self.pageCache) { [self.pageCache setObject:pageImage forKey:pageIndexNumber]; } } } //modified here //return pageImage.CGImage; return (__bridge CGImageRef)(pageImage); } 

简单来说,内容在模拟器上完美显示,但在iPad上显示为空白。

我终于解决了这个问题。 这是我不知道的适当的。 但对那些使用LeavesView。 如果'return pageImage.CGImage'正在抛出'EXC_BAD_ACCESS',可以通过删除这一行来解决:

 //CGImageRelease(image); 

在这个函数中find'imageForPageIndex':

 - (CGImageRef)imageForPageIndex:(NSUInteger)pageIndex { if (CGSizeEqualToSize(self.pageSize, CGSizeZero)) return NULL; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, self.pageSize.width, self.pageSize.height, 8, /* bits per component*/ self.pageSize.width * 4, /* bytes per row */ colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); CGColorSpaceRelease(colorSpace); CGContextClipToRect(context, CGRectMake(0, 0, self.pageSize.width, self.pageSize.height)); [self.dataSource renderPageAtIndex:pageIndex inContext:context]; CGImageRef image = CGBitmapContextCreateImage(context); CGContextRelease(context); [UIImage imageWithCGImage:image]; //CGImageRelease(image); return image; } 

请保持您的'cachedImageForPageIndex:'function。 如果你改变了它,代码如下:

 - (CGImageRef)cachedImageForPageIndex:(NSUInteger)pageIndex { NSNumber *pageIndexNumber = [NSNumber numberWithInt:pageIndex]; UIImage *pageImage; @synchronized (self.pageCache) { pageImage = [self.pageCache objectForKey:pageIndexNumber]; } if (!pageImage) { CGImageRef pageCGImage = [self imageForPageIndex:pageIndex]; if (pageCGImage) { pageImage = [UIImage imageWithCGImage:pageCGImage]; @synchronized (self.pageCache) { [self.pageCache setObject:pageImage forKey:pageIndexNumber]; } } } return pageImage.CGImage; }