Ich versuche, Grafik zu erzeugen und seinen Screenshot eins nach dem anderen zu machen. Die Anwendung funktioniert gut für einmal und wenn ich versuche, Screenshots ein zweites Mal zu erfassen, stürzt die Anwendung ab, dass die Anwendung aufgrund eines Speicherfehlers beendet wurde. Dies geschieht nur in iOS8 nicht in iOS7. Hier ist der Code, um den Screenshot zu erfassen, es stürzte online - [view.layer renderInContext:context];
Die Anwendung verwendet 124 MB bei Spitzenlast und es gibt keine Speicherwarnung generiert vor dem Absturz. Selbst wenn keine andere Anwendung im Hintergrund läuft, stürzt die Anwendung auf iOS 8 ab. Und wenn ich die obige Zeile auskommentiere, stürzt die Anwendung überhaupt nicht ab, aber der Screenshot ist nicht vollständig.Anwendung stürzt auf iOS8 nur wegen Speicherfehler ab
- (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;
}
Was könnte falsch sein? Ich kann keine Lösung finden. Ich habe herausgefunden, dass der Speicherdruck sich vom Speicherfehler unterscheidet. Aber keine Lösung wie man es beheben kann. Auch die Funktion captureView wird innerhalb eines @autorelease-Pools aufgerufen.
Hier ist das unbekannte Absturzprotokoll, das auf iOS8 generiert wird. iOS7 stürzt es nie ab.
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
> könnten Sie bitte das Crash-Protokoll zur Verfügung stellen ?? –
hinzugefügt Crash-Protokoll. –
Ich habe auch eine App, die scheinbar zufällig, in iOS 8 abstürzt, aber nicht iOS 7. V seltsam ... – mm2001