2014-09-25 2 views
9

그래프를 생성하고 스크린 샷을 하나씩 가져 오려고합니다. 응용 프로그램이 정상적으로 작동하고 두 번째로 다시 스크린 샷을 캡처하려고하면 응용 프로그램이 메모리 오류로 인해 응용 프로그램이 종료되었다는 오류가 발생합니다. 이것은 iOS7이 아닌 iOS8에서만 발생합니다. 스크린 샷을 캡처하는 코드는 다음과 같습니다. 응용 프로그램이 최고 사용량에서 124MB를 사용하며 충돌 전에 메모리 경고가 생성되지 않습니다. 백그라운드에서 실행중인 다른 응용 프로그램이 없더라도 iOS 8에서는 응용 프로그램이 충돌합니다. 위의 행을 주석 처리하면 응용 프로그램이 전혀 중단되지 않지만 취해진 스크린 샷은 완전한 화면이 아닙니다.메모리 오류로 인해 iOS8에서만 응용 프로그램이 충돌 함

- (BOOL)captureView:(UIView *)view forGraph:(NSString *)graphName 
{ 

BOOL isImageCpatured = NO; 

@try { 
    CGRect rect = view.bounds; 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [view.layer renderInContext:context]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    CGImageRef imageRef; 

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { 
     imageRef = CGImageCreateWithImageInRect([img CGImage], CGRectMake(0, 113, 1024, 532)); 
    } 
    else { 
     imageRef = CGImageCreateWithImageInRect([img CGImage], CGRectMake(0, 93, 1024, 532)); 
    } 

    img = nil; 

    UIImage *image = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef);   
    NSData *pngData = UIImagePNGRepresentation(image); 

    [pngData writeToFile:[Utility_Class documentsPathForFileName:[NSString stringWithFormat:@"%@BG.png",graphName]] atomically:YES]; 

    pngData = nil; 

    image = nil; 

    isImageCpatured = YES; 

} 
@catch (NSException *exception) { 
    return isImageCpatured; 
} 
@finally { 

} 

return isImageCpatured; 
} 

무엇이 잘못되었을 수 있습니까? 나는 어떤 해결책도 찾을 수 없다. 기억력이 기억 상실과 다르다는 것을 알았습니다. 그러나 해결 방법이 없습니다. captureView 함수조차도 @autorelease 풀 내부에서 호출됩니다.

다음은 iOS8에서 생성 된 알 수없는 크래시 로그입니다. iOS7은 결코 충돌하지 않습니다.

Incident Identifier: 24F29058-7D47-40B6-87B4-2183220DB55B 
CrashReporter Key: 6079e634bf7aeebb0e4d9ea95336cb33b0fc49dd 
Hardware Model:  iPad4,1 
OS Version:   iPhone OS 8.0 (12A365) 
Kernel Version:  Darwin Kernel Version 14.0.0: Tue Aug 19 15:09:47 PDT 2014; root:xnu-2783.1.72~8/RELEASE_ARM64_S5L8960X 
Date:    2014-09-25 18:21:25 +0530 
Time since snapshot: 88 ms 
Free pages:        2219 
Active pages:       96945 
Inactive pages:       48102 
Speculative pages:      314 
Throttled pages:       0 
Purgeable pages:       2 
Wired pages:        77304 
File-backed pages:      40758 
Anonymous pages:       104603 
Compressions:       1467794 
Decompressions:       158957 
Compressor Size:       24980 
Uncompressed Pages in Compressor:  119797 
Page Size:        16384 
Largest process: my application Name 
+0

가>는 충돌 로그를 제공하십시오 수 ?? –

+0

에 오류 로그가 추가되었습니다. –

+0

iOS 8에서는 겉으로보기에는 무작위로,하지만 iOS 7에서는 크래시가 발생하는 앱도 있습니다. V ... 이상한 앱 ... – mm2001

답변

관련 문제