nedeniyle iOS'ta kilitleniyor Grafik oluşturmaya ve ekran görüntüsünü tek tek almaya çalışıyorum. Uygulama bir kereliğine iyi çalışıyor ve daha sonra ikinci kez ekran görüntülerini yakalamaya çalıştığımda, uygulama bellek hatası nedeniyle uygulamanın sonlandığını söyleyerek çöküyor. Bu, iOS7'de değil iOS8'de gerçekleşir. Burada ekran görüntüsünü yakalamak için kod satırda çöktü - [view.layer renderInContext:context];
Uygulama en yoğun kullanımda 124 MB kullanır ve çökmeden önce bellek uyarısı oluşturulmaz. Arka planda çalışan başka bir uygulama olmasa bile, uygulama iOS 8'de çöküyor. Ve eğer yukarıdaki satırı yorumlarsam, uygulama hiç çökmez, ancak ekran görüntüsü tam ekran değildir.Uygulama, yalnızca Bellek Hatası
- (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;
}
Neyin yanlış olabilir? Herhangi bir çözüm bulamıyorum. Bellek basıncının bellek hatasından farklı olduğunu öğrendim. Ancak çözümün nasıl düzeltileceği yok. CaptureView işlevi bile @autorelease havuzunun içinde çağrılır.
Burada iOS8'de oluşturulan Bilinmeyen Kilitlenme Günlüğü var. iOS7 asla çökmez.
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
> Eğer kilitlenme günlüğünü sağlamak misiniz ?? –
, kilitlenme günlüğü ekledi. –
Ayrıca iOS 8'de değil, iOS 7'de rastgele bir şekilde çökmekte olan bir uygulama var. V garip ... – mm2001