2014-09-25 7 views
9

के कारण आईओएस 8 पर एप्लिकेशन क्रैश होता है, मैं ग्राफ उत्पन्न करने और एक स्क्रीनशॉट एक-एक करके लेने की कोशिश कर रहा हूं। एप्लिकेशन एक बार के लिए ठीक काम करता है और फिर जब मैं स्क्रीनशॉट को दूसरी बार फिर से कैप्चर करने का प्रयास करता हूं, तो एप्लीकेशन क्रैश हो जाता है कि एप्लिकेशन मेमोरी त्रुटि के कारण समाप्त हो गया है। यह आईओएस 7 में आईओएस 7 में नहीं होता है। यहां स्क्रीनशॉट को कैप्चर करने के लिए कोड, यह लाइन पर दुर्घटनाग्रस्त हो गया - [view.layer renderInContext:context]; एप्लिकेशन शीर्ष उपयोग पर 124 एमबी का उपयोग करता है और क्रैश होने से पहले कोई स्मृति चेतावनी उत्पन्न नहीं होती है। यहां तक ​​कि यदि पृष्ठभूमि में कोई अन्य एप्लिकेशन नहीं चल रहा है, तो एप्लिकेशन आईओएस 8 पर दुर्घटनाग्रस्त हो जाता है। और यदि मैं उपर्युक्त रेखा पर टिप्पणी करता हूं तो एप्लिकेशन बिल्कुल क्रैश नहीं होता है, लेकिन स्क्रीनशॉट लिया गया पूर्ण स्क्रीन नहीं है।केवल स्मृति त्रुटि

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

क्या गलत हो सकता है? मैं कोई समाधान नहीं ढूंढ पा रहा हूं। मुझे पता चला कि मेमोरी दबाव स्मृति त्रुटि से अलग है। लेकिन इसे हल करने का कोई समाधान नहीं है। यहां तक ​​कि कैप्चर व्यू फ़ंक्शन को @autorelease पूल के अंदर भी बुलाया जाता है।

यहां आईओएस 8 पर उत्पन्न अज्ञात क्रैश लॉग है। आईओएस 7 यह कभी दुर्घटनाग्रस्त नहीं होता है।

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

मेरे पास एक ऐप भी है जो आईओएस 8 में यादृच्छिक रूप से क्रैश हो रहा है, लेकिन आईओएस 7 नहीं। वी अजीब ... – mm2001

उत्तर

0

यह CGImageCreateWithImageInRect के साथ एक बग के कारण है। देखें: http://openradar.appspot.com/radar?id=5780787475513344

स्रोत: https://twitter.com/steipete/status/524224268952158208

+0

क्या आप यहां प्रासंगिक जानकारी पोस्ट कर सकते हैं? उद्धरण, विधियां, आदि – Maple

+0

मैंने तदनुसार उत्तर अपडेट किया। – Eric

संबंधित मुद्दे