关于生命周期函数dealloc的使用小结
1.对象如果不存在了,请将指针置空,养成良好的内存控制习惯。
2.[super dealloc];要在dealloc函数的最后调用(类似于C++的析构函数),这样就可以在自身被销毁之前再次调用自身的函数。
3.对于某些已经使用(alloc,copy和retain)分配内存的对象,可以直接release,对于可能出现分配内存的对象需要做一次判断再去release(比如点击事件响应的)。
4.不用去依靠retainCount输出来判断内存计数器,apple官方文档都申明过可能有误显示
5.在调试模式下可能没有的内存问题会在运行模式下出现,这个时候就要根据经验来判断了,比如首先应该想到的就是dealloc函数中是否写的有问题,或者要考虑这个对象中是否有autorelease的对象被放在dealloc中了,引起了内存的混乱(事实证明有这种情况)
6.最关键的一条:dealloc函数可能在你调试的时候根本没有被调用,原因可能会是对self.XX对象的赋值造成了retainCount+1,这样就会出现对象release的时候没有调用dealloc,所以在进行了(alloc,copy和retain)之后要及时的release,并且自己一定要清除哪个是最后的release,会调用dealloc
以下举个例子:
- (void)dealloc {
[self closeConnection]; //-------------------我可以在这里调用类似关闭连接的操作
[Table release]; //-------------------像这种已经被分配内存的对象就可以直接销毁
[SearchBar release];
[keyString release];
[requestArray release];
[categoryArray release];
[flagArray release];
if (categoryViewControl!=nil) { //-------------------这种对象的存在有可能性的需要做一次空值判断
[categoryViewControl release];
}
[super dealloc];
}
转载于:https://www.cnblogs.com/wangbaixue/p/5192175.html
关于生命周期函数dealloc的使用小结相关推荐
- Vue生命周期函数详解
生命周期图 生命周期方法 var vm = new Vue({el: '#app',data: {msg:'ok'},methods: {show:function () {console.log(& ...
- react生命周期函数
在react中,生命周期函数指的是组件在加载前,加载后,以及组件更新数据和组件销毁时触发的一系列方法.通常分为以下几类: 组件加载的时候触发的函数:constructor .componentWill ...
- uniapp里的mounted_uni-app 生命周期函数执行顺序
{{message}} 点击 import { mapState, mapMutations } from 'vuex'; var key = 0; export default { data() { ...
- 小程序的生命周期函数?
onLoad Function 生命周期函数--监听页面加载 onReady Function 生命周期函数--监听页面初次渲染完成 onShow Function 生命周期函数--监听页面显示 on ...
- vue源码解析pdf_Vue源码全面解析八 callHook函数(触发生命周期函数)
首先我们打开'src/core/instance/lifecycle.js'文件,代码如下: export function callHook (vm: Component, hook: string ...
- vue openlayer单击地图事件循环多次执行_VUE生命周期函数面试题
什么是 vue 生命周期 vue生命周期是指vue实例对象从创建之初到销毁的过程,vue所有功能的实现都是围绕其生命周期进行的,在生命周期的不同阶段调用对应的钩子函数实现组件数据管理和DOM渲染两大重 ...
- reactjs组件的生命周期函数:getSnapshotBeforeUpdate更新之前获取快照
reactjs组件的生命周期函数:getSnapshotBeforeUpdate更新之前获取快照
- reactjs组件的生命周期函数:getDerivedStateFromProps
reactjs组件的生命周期函数:getDerivedStateFromProps
- 【视频】vue生命周期函数
P15vue生命周期函数 https://www.bilibili.com/video/av91679349?p=15
最新文章
- SANBoot安装系统
- RDKit | 将rdMolDraw2D和RDKit生成的结构图输出到Excel
- 什么是迁移学习?迁移学习的超参数有哪些?
- PAT 1042. 字符统计
- win7-elasticsearch环境搭建
- 广州大学专业选修课介绍-----------Linux操作系统分析及实践
- PHP的password_hash()使用实例
- 利用CMD在vim中直接编译
- 牛腩学ASP.NET CORE做博客(视频)
- 批量下载CSS中的图片
- 天勤率辉考研数据结构2021
- RAID控制器是什么?
- 成功解决RuntimeError: cuda runtime error (30)
- 双系统启动修复完整解决方案
- 基于Self-Hosted模式搭建K8S可观测平台Pixie(内附填坑方法)
- md文件如何编辑和转换(不依赖插件Markdown Viewer)
- Linux设置软件开机自启
- 10款最佳在线地图软件介绍
- 5G技术使智能家居个性化家庭成为现实
- 【EMV L2】Select PSE应用选择相关的卡片数据格式
热门文章
- Spring @Import
- gitlab 删除仓库
- python 链接数据库
- oracle database version,Oracle Database Version History
- 问题 | golang开发之go.mod的使用方法
- Linux学习总结(28)——Linux主机加固
- 炒了8年的概念,到底该如何理解DevOps这个词?
- php显示几个字符串,比较php中的两个字符串并显示字符差异
- 用java里的junit框架_使用Java JUnit框架里的@SuiteClasses注解管理测试用例
- sigv linux 信号,LINUX 信号处理