Tom*_*ift 4 calayer catiledlayer ios
我今天遇到了一个涉及CATiledLayer的有趣的iOS问题.这只发生在设备上 - 而不是在模拟器中.
我的视图通过drawLayer:inContext:delegate callback在其CALayer中绘制.该图层具有CATiledLayer派生的子图层,该图层在重写的drawInContext:方法中执行自己的绘图.
这两个层都通过CGContextDrawPDFPage()呈现pdf内容.(CALayer绘制低分辨率版本,而CATiledLayer子层在顶部绘制高分辨率内容.)
我遇到了一个我将完成视图的场景 - 将其从超级视图中删除并释放它.在视图上调用dealloc().稍后,系统将调用CATiledLayer的drawInContext:方法(在后台线程上).它会绘制,但是从方法返回时,Springboard会崩溃,并且在这样做时,也会关闭我的应用程序.
我通过在视图的dealloc方法中在CATiledLayer中设置一个标志来修复它,告诉它不再渲染.
但我只能想象有一种更优雅的方式.为什么仍然在父图层之后调用CATiledLayer drawInContext:方法,并且父图层的视图被解除分配?关闭视图的正确方法是什么,以免发生这种情况?
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |