CCLayer的dealloc 析构里面不要去释放 不是自己的child的 成员
来源:互联网 发布:朋友圈微商软文软件 编辑:程序博客网 时间:2024/05/22 10:45
CCLayer的dealloc 析构里面不要去释放 不是自己的child的 成员
我在一个自己的ALayer里面的init函数里面,创建了BLayer的一个对象:
BLayer blayer = [BLayer node]; [self.parent addChild:blayer z:1];
这个对象是 add到ALayer的parent里面,所以它跟ALayer的对象是兄弟关系,而不是ALayer的child.
然后,我在ALayer的dealloc 中,尝试去释放这个不是自己的childe的成员:
if (blayer) { [blayer removeFromParentAndCleanup:YES]; blayer = nil; }
这个时候可能会导致crash发生,因为在parent发生析构调用dealloc的时候,可能会先调用blayer的析构,然后再去
调用alayer的析构,而在运行到我们的代码的时候,blayer已经被析构,但是指针还在,所以会再次析构,这个时候重复析构就出错了。
所以,这这种情况下,不应该调用blayer的析构了,而是让parent去默认析构掉它。
从根本上来说,也许一开始就不应该在ALayer的内部创建一个不是自己child的 BLayer对象。以后慎重考虑这种方式。
- CCLayer的dealloc 析构里面不要去释放 不是自己的child的 成员
- 关于dealloc释放的问题
- 后释放super dealloc的原因
- [super dealloc]内存释放的先后顺序
- 不要随便分享自己的想法,不是每个人都能懂你
- 不要总是说别人的不是,多检点一下自己
- SEO不是网站的全部 不要挖坑困住自己!
- 如果饭店不是自己的,最好别去
- 不是自己的事情不要问, 别人的事情不要管
- cclayer的区域
- CCLayer initWithColor的问题
- 类的指针成员释放
- 用OC的动态性去处理dealloc
- 生活不是自己的~~
- 在 往CCLayer里面加 Notification通知的时候,一定要加在OnEnter和OnExit里面
- 粘上去的博客不要去看
- “WriteHuge”: 不是“CFile”的成员
- “WriteHuge”: 不是“CFile”的成员
- linux 文件描述符表 打开文件表 inode vnode
- IOS中UIScrollView的contentSize、contentOffset和contentInset属性
- RSS订阅
- SQLite数据库如何存储和读取二进制数据
- centos中文乱码
- CCLayer的dealloc 析构里面不要去释放 不是自己的child的 成员
- mediascannerservice.java
- Linux2.6中断与异常
- Eclipse学习之一:Eclipse安装与基本使用
- Python_API_os.path_walk_待填充
- iphone-响应上下左右滑动手势
- 供应链管理
- Java网络编程
- SQLite DB 应用心得