问题描述
- 屏幕截图时会报内存不足
- 捕捉视图的屏幕截图,保存图片在文件夹中:
CGSize size = self.view.bounds.size;CGRect cropRect;CGRect screenBounds = [[UIScreen mainScreen] bounds];if([self isPad]){ cropRect = CGRectMake(145 110 476 476);}else{ if (screenBounds.size.height ==568) { cropRect = CGRectMake(40 69 240 240); } else { cropRect = CGRectMake(40 62 240 240); }}/* Get the entire on screen map as Image */UIGraphicsBeginImageContext(size);[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage * mapImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();/* Crop the desired region */CGImageRef imageRef = CGImageCreateWithImageInRect(mapImage.CGImage cropRect);UIImage * cropImage = [UIImage imageWithCGImage:imageRef];CGImageRelease(imageRef);/* Save the cropped image UIImageWriteToSavedPhotosAlbum(cropImage nil nil nil);*///save to document folderNSData * imageData = UIImageJPEGRepresentation(cropImage 1.0);NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory NSUserDomainMask YES);NSString* documentsDirectory = [paths objectAtIndex:0]; imagename=[NSString stringWithFormat:@""Fff.jpg""];NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imagename];////NSLog(@""full path %@""fullPathToFile);[imageData writeToFile:fullPathToFile atomically:NO];
在截图15到20次后,就会出现内存空间不足的警告,然后应用就会崩溃。
不知道有没有更好的方法不引起这种内存问题?
解决方案
这说明内存并没有被释放干净一个简单的做法是用
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
//这里写截图并保存的代码
[pool release];
这应该能够显著提高性能
时间: 2024-10-30 02:27:36