2014-11-21 11 views
0

내 첫 번째 게시이므로 나와 함께하시기 바랍니다. 사이트를 방문한 후 사이트를 검색 한 결과이 문제를 해결할 수없는 것으로 보입니다. 누군가가 나를 대답 할 수 있으면 행복 할거야.LeavesCache.m은 시뮬레이터에서 작동하지만 기기에서는 작동하지 않습니다.

LeavesCache.m은 작년에 ios 7을 수용 한 것으로 착각하지 않으면 수정되었습니다.

코드는 아래와 같지만 return pageImage.CGImage의 코드는 EXC_BAD_ACCESS입니다.

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에서는 비어 있습니다.

답변

0

나는 이것을 마침내 해결할 수있었습니다. 이게 내가 얼마나 모르는가. 그러나 LeavesView를 사용하는 사람들에게.

- (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; 
} 

유지하십시오, 'imageForPageIndex을'

//CGImageRelease(image); 

그것은이 기능에서 발견된다 : '반환 pageImage.CGImage는'당신에게 'EXC_BAD_ACCESS를'던지는 경우이 줄을 제거하여 해결할 수 있습니다 'cachedImageForPageIndex :'함수를 호출하십시오. 코드를 변경하면 코드는 다음과 같습니다.

- (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; 
}