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的子视图.在我的情况下,它是一个错误的约束导致UITextVIEw将其高度设置为2000.对于任何有这样的问题并且无法弄明白的人,请从renderInContext继续:查看您的子视图以确保它们正确.
总结以上是内存溢出为你收集整理的ios – 主线程上昂贵的renderInContext内存使用情况全部内容,希望文章能够帮你解决ios – 主线程上昂贵的renderInContext内存使用情况所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)