Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅由于内存错误,应用程序在iOS8上崩溃_Ios_Objective C_Ipad_Memory_Ios8 - Fatal编程技术网

仅由于内存错误,应用程序在iOS8上崩溃

仅由于内存错误,应用程序在iOS8上崩溃,ios,objective-c,ipad,memory,ios8,Ios,Objective C,Ipad,Memory,Ios8,我试图生成一个图形,并一个接一个地截图。该应用程序只运行了一次,当我第二次尝试再次捕获屏幕截图时,应用程序崩溃,说应用程序由于内存错误而终止。这只发生在iOS8中,而不发生在iOS7中。这里是捕获截图的代码,它在第行崩溃-[view.layer renderInContext:context]; 应用程序在峰值使用时使用124 MB,并且在崩溃之前不会生成内存警告。即使没有其他应用程序在后台运行,该应用程序也会在iOS 8上崩溃。如果我把上面这行注释掉,应用程序就不会崩溃,但截图并不是完整的屏

我试图生成一个图形,并一个接一个地截图。该应用程序只运行了一次,当我第二次尝试再次捕获屏幕截图时,应用程序崩溃,说应用程序由于内存错误而终止。这只发生在iOS8中,而不发生在iOS7中。这里是捕获截图的代码,它在第行崩溃-
[view.layer renderInContext:context];
应用程序在峰值使用时使用124 MB,并且在崩溃之前不会生成内存警告。即使没有其他应用程序在后台运行,该应用程序也会在iOS 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;
}
有什么不对劲吗?我找不到任何解决办法。我发现内存压力不同于内存错误。但没有解决办法如何修复它。甚至captureView函数也在@autorelease池中调用

以下是iOS8上生成的未知崩溃日志。它从不崩溃

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

这是由于
CGImageCreateWithImageInRect
的错误造成的。见此:


来源:

>你能提供崩溃日志吗?我还有一个应用程序,它在iOS 8中崩溃,似乎是随机的,但不是iOS 7。V奇怪…我的应用程序也有同样的问题。它发生在iPhone 5s和6上,但不是5!崩溃日志显示这是内存问题@你用弧吗?@Mota,是的,我用弧。虽然我添加了Crashlytics,现在得到了一个可重复的堆栈跟踪,但出现以下错误:。您是否尝试过在Instruments中评测应用程序?最好是在iOS 7和iOS 8上,然后比较结果?可能是iOS 8中的一个bug。你能在这里发布相关信息吗?引用、方法等。