- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用在主线程上执行的以下代码来截取 屏幕外(不是 self.view 的 subview ) View ,然后显示在 中UIImageView
。就功能而言,一切正常,但是由于此代码在扩展上运行,因此内存限制要严格得多(我读过大约 30 MB 是上限?),
UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.screenshotView.frame.size.width, self.screenshotView.frame.size.height-2), YES, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.screenshotView.layer renderInContext:context];
_generatedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.previewImageView.image = _generatedImage;
每当按下 UIButton
时,都会使用 performSelectorOnMainThread
调用此代码所在的方法。 UIAlertController
也用于处理 UI 的卡住,但如果连续按下按钮(在解除 UIAlertController
后),前几次内存使用量将保持在基线附近 (~15 MB),但随后飙升至 ~30 MB 并保持在那里,直到几秒钟后再次调用该方法,然后当它完成渲染时,它会回落到 ~15 MB。
我不确定是什么导致了这种行为,为什么内存使用量不会一直保持在 ~15 MB 左右,我不确定当连续调用该方法时它出现峰值的原因是什么.听起来更像是一件事有时同时发生?如何确保不会发生这种情况,并且仅在可以安全地再次渲染而不会增加内存使用时才关闭 UIAlertController
。
最佳答案
内存峰值不是由于 renderInContext:
调用,尽管包括指向它的工具在内的所有内容,但它是由于捕获的 UIView 的
。在我的情况下,这是一个错误的约束,导致 subviews
UITextView
将其 height
设置为 2000
。
对于遇到此类问题但无法解决的任何人,请从 renderInContext:
继续并查看您的 subview 以确保它们正确。
关于ios - 主线程上昂贵的 renderInContext 内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44914780/
在使用“ObjectAlloc”在仪器中进行调试时,我注意到为 renderInContext 调用分配了 7meg 内存,但它从未被释放。当我注释掉 renderInContext 调用时,这种情况
我正在尝试在我的 iOS 设备上为某个应用程序保存当前显示的 View ,并且这工作正常。但是,当我尝试以横向保存 UIImageView 时,我遇到了问题。 请参阅描述我的问题的下图: 我正在为这个
我有个问题。当我在 iPad 中使用“renderInContext”时,使用的内存永远不会释放并累积,直到应用程序以“内存警告”级别 = 1 和级别 = 2 关闭 我的代码: CGRect medi
我正在从 webview 渲染图像。所以 renderIncontext 方法在 for 循环中调用了 50 多次。在 20 或 30 次后,我的应用程序因更多内存消耗而崩溃。 我使用了这段代码: U
我在 2448 X 2448 像素的图像上运行此代码。 fullScaleView 也是 2448 X 2448(fullScreenView Rect:{{0, 0}, {2448, 2448}})
背景 我正在使用来自 Chapter 8, Example 14 — Resize and Rotate 的 Erica Saduns Cookbook 示例显然可以调整和旋转 UIImageView
我用 CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; rotationAndPerspectiveTran
我正在渲染多个图层以获得一张最终图像。其中一张图片包含一张脸,另一张图片包含背景,脸部周围有透明渐变,因此隐藏了真实背景。在 iOS6 中它工作得很好,但它在 iOS7 中使用透明渐变创建了一个奇怪的
我可以使用以下代码从核心动画层创建 UIImage: - (UIImage*)contentsImage; { UIGraphicsBeginImageContext([self bounds]
我有一个 View ,里面有多个 View ,还有一个图像演示(又名“封面流”)......而且我需要以编程方式制作屏幕截图! 因为文档说“renderInContext:”不会渲染 3d 动画: “
我有一个相当大的CAShapeLayer我正在渲染。该层是完全静态的,但它包含在 UIScrollView 中所以它可以移动和缩放——基本上,它必须时不时地重新绘制。为了提高滚动的帧率,我设置了 sh
此代码有效: UIGraphicsBeginImageContextWithOptions(aRect.size, NO, 0.0); [self.view drawViewHierarchyInRe
我用这段代码做了截图, CGFloat breed = 768; CGFloat hoogte = 975; CGSize afmeting = CGSizeMake(breed, hoogte);
我正在通过截取 UIView 的屏幕截图来创建 PDF,目前这在配备视网膜显示屏的 iPad3 上运行良好,但在具有较低分辨率屏幕的其他设备上进行测试时,我遇到了文本分辨率问题。 这是我的代码:
我有一个在循环中调用的方法,看起来像这样: NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; UIImageView *backg
我正在使用在主线程上执行的以下代码来截取 屏幕外(不是 self.view 的 subview ) View ,然后显示在 中UIImageView。就功能而言,一切正常,但是由于此代码在扩展上运行,
我手动创建了一个 CGBitmapContext: bitmapContext = CGBitmapContextCreate( myImageData, width, height, 8, 4 *
我正在使用此代码从 View 中渲染图像。然后我将其保存到相册中。图像模糊?为什么?有解决办法吗? UIGraphicsBeginImageContext(self.view.bounds.size)
CALayer -drawInContext: 和 -renderInContext: 有什么区别? 最佳答案 当提供自定义 Quartz 绘制内容以在 CALayer 中显示时,您可以覆盖 -dra
在浏览了关于 SO 的所有相关问题后,我了解到 drawViewHierarchyInRect 应该比 renderInContext 快得多,但这不是我所看到的。 这是我的带有时间分析的快照功能:
我是一名优秀的程序员,十分优秀!