iOS CATiledLayer崩溃

iOS CATiledLayer崩溃,第1张

概述我有一个适用于iPad的pdf阅读器应用程序,我使用滚动视图来显示每个页面.我将页面保持在视图中,并在页面的任一侧查看一页.我有纵向和横向视图的独立视图.纵向视图显示单个页面,横向查看器显示2个页面. 当iPad改变方向时,我会卸载旧方向的视图并加载新方向的视图.所以说它是在纵向视图中然后更改为横向应用程序卸载纵向视图并加载横向视图.这一切都很有效,除非pdf很大. pdf是使用tileslaye 我有一个适用于iPad的pdf阅读器应用程序,我使用滚动视图来显示每个页面.我将页面保持在视图中,并在页面的任一侧查看一页.我有纵向和横向视图的独立视图.纵向视图显示单个页面,横向查看器显示2个页面.

当iPad改变方向时,我会卸载旧方向的视图并加载新方向的视图.所以说它是在纵向视图中然后更改为横向应用程序卸载纵向视图并加载横向视图.这一切都很有效,除非pdf很大.

pdf是使用tileslayers绘制的.当方向改变为大pdf时,应用程序正在进行清理.如果在绘制完所有图块之前更改了方向,则应用程序仅会崩溃.我的猜测是它崩溃了,因为它试图将瓷砖绘制到视图而不是已卸载.那么当我卸载视图时有没有办法停止绘制图块?

解决方法 您需要将CALayer的委托设置为nil,然后将其从supervIEw中删除.
这会停止渲染,之后您可以安全地释放.

- (voID)stopTiledRenderingAndRemoveFromSuperlayer; {    ((CATiledLayer *)[self layer]).delegate = nil;        [self removeFromSupervIEw];    [self.layer removeFromSuperlayer];}

另外,请确保从主线程中调用此方法,否则可能会出现可怕的错误.

总结

以上是内存溢出为你收集整理的iOS CATiledLayer崩溃全部内容,希望文章能够帮你解决iOS CATiledLayer崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1016728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存