博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于CALayer导致的crash问题
阅读量:5157 次
发布时间:2019-06-13

本文共 1033 字,大约阅读时间需要 3 分钟。

push到一个页面进行绘图时,设置如下:

CALayer * layer = [CALayer layer];layer.frame = CGRectMake(0, 0, 300, 300);layer.delegate = self;[layer setNeedsDisplay];[self.view.layer addSublayer:layer];
-(void) drawLayer: (CALayer*) layer inContext: (CGContextRef) context;

设置delegate后,点击返回按钮时会奔溃。没有push直接绘制的时候就没有问题。

设置其delegate为uiview类型实例。会导致程序crash。

关于这一点,苹果官方在文档中已有说明。解决办法:

he lightest-wight solution would be to create a small helper class in the the file as the UIView that's using the CALayer:In MyView.h@interface MyLayerDelegate : NSObject. . .@endIn MyView.m@implementation MyLayerDelegate- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx{. . .}@endJust place those at the top of your file, immediately below the #import directives. That way it feels more like using a "private class" to handle the drawing (although it isn't -- the delegate class can be instantiated by any code that imports the header).

没怎么看懂:

直接继承CALayer或者CAShapeLayer重写:

- (void)drawInContext:(CGContextRef)ctx

就可以

 

转载于:https://www.cnblogs.com/fengmin/p/8480014.html

你可能感兴趣的文章
python Termux Android 开发介绍
查看>>
开源框架中常用的php函数
查看>>
Java语法糖初探(三)--变长参数
查看>>
Liunx常用命令(Mile)
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
C#语言学习:变量的声明与初始化的范围(对比C++)
查看>>
D. Buy a Ticket(优先队列+dijkstra)
查看>>
set&map
查看>>
git解决一个电脑多用户情况(win7)
查看>>
《高级软件测试》实践作业4学习记录12月28日
查看>>
集合类总结
查看>>
spring boot开发REST接口
查看>>
[读书笔记] Python数据分析 (二) 引言
查看>>
4.AE中的缩放,书签
查看>>
CVE-2014-6321 && MS14-066 Microsoft Schannel Remote Code Execution Vulnerability Analysis
查看>>
网络攻防 第七周学习总结
查看>>
关于_weblogic.xml的sessionID配置
查看>>
给一次重新选择的机会_您还会选择程序员吗?
查看>>
Storm Trident示例CombinerAggregator
查看>>
MFC中lib和dll的区别
查看>>