博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
The property delegate of CALayer cause Crash.
阅读量:6488 次
发布时间:2019-06-24

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

在非arc与arc的环境中使用时,导致程序crash.

 

1 //当前类使用-fno-objc 编译 2  3     needle_ = [[MyView alloc] init]; 4  5     needleLayer = [CALayer layer];     6     needleLayer.delegate = self.needle; 7  8  9 - (void)dealloc10 {    11     [needle_ release];12     [needleLayer release];13     [super dealloc];   //crash14 }15

 

 

1 -(void) drawLayer: (CALayer*) layer inContext: (CGContextRef) context

 

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

@interfaceMyLayerDelegate:NSObject...@end

In MyView.m

@implementationMyLayerDelegate-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx{
...}@end

Just 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).

 

Feedback
 
2012-11-09 11:51 |  
needleLayer.delegate = nil;这句话写在dealloc中,因为CALayer中的delegate是assign的属性,这样你释放[needle_ release];后,deletate就是野指针了。在arc中如果有weak了,如果delegatej是weak的属性,就不会crash..
我们在程序设计中也要注意传指针。
  
回复引用删除
[
楼主]
2012-11-14 15:07 |  
 为了谁
请教一下,为什么视图已经在delloc中了,它还会访问用CALayer的delegate呢?

转载地址:http://gaauo.baihongyu.com/

你可能感兴趣的文章
用css实现视差效果
查看>>
最新阿里Java面试题,这些面试题你会吗?
查看>>
asp.net core下的使用Application Insights
查看>>
nginx平滑升级、在线添加模块(tengine 动态加载模块)
查看>>
详解MANIFEST.MF文件
查看>>
Selenium关于滚动条的定位方法总结
查看>>
linux下DHCP简单配置实例
查看>>
Win7+Ubuntu11
查看>>
笔记2
查看>>
Windows系统中免安装配置MySQL-5.6.24数据库的方法
查看>>
DNS之主从同步
查看>>
我的友情链接
查看>>
Exchange 2010的部署
查看>>
notes 临时文件
查看>>
大表之困惑 - 数据建模的前期规划十分重要
查看>>
***团体Anonymous黑美智库 盗百万美元做慈善
查看>>
分支+循环
查看>>
基于算法的建模---形状语法核其他过程方法
查看>>
Java语言概述
查看>>
我的友情链接
查看>>