IOS-手动释放内存问题
来源:互联网 发布:web数据挖掘毕设课题 编辑:程序博客网 时间:2024/06/11 04:04
刚开始学的时候是从IOS5开始的,从IOS4升级后的IOS5,最大的亮点就是ARC,自动释放内存,所以做项目的时候就会打开ARC,(ios5在建立的时候就会提醒你要不要打开ARC,我看了一下IOS7时却没有了这个功能,打开和关闭,见http://blog.csdn.net/q199109106q/article/details/8565403)
用ARC的时候觉得很舒服,很爽啊,但师父说,有的时候ARC并不能完全管理你的内存,想要内存控制的更好,手动管理是一个不错了选择
于是,我开始了手动管理
刚开始啊,经常发现有的东西都是空的,找了之后才发现还没赋值就已经被我释放掉了
UILabel * endLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 10, 40, 25)];
endLabel.text = @"到";
[endLabel release];
[whiteView2 addSubview:endLabel];
像这样,endLabel是不会出现到你的UI上的,那是因为过早释放
应该这样
UILabel * endLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 10, 40, 25)];
endLabel.text = @"到";
[whiteView2 addSubview:endLabel];
[endLabel release];OK,大功告成局部变量的释放就在后面直接释放,而定义的全局变量就应该在这里
- (void)dealloc
{
[super dealloc];
[endLabel release];}
比如说tableView里面的Cell
cell = [[[ActivityCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]autorelease];
使用autorelease释放最后,还有一个
比如说UIbutton
释放的时候要考虑这样问题
不是所有的Button都是需要释放的
像这样,就是不用释放的,不管他是局部变量还是全局变量
//保存按钮
UIButton * saveBtn =[UIButton buttonWithType:UIButtonTypeCustom];
saveBtn.frame = CGRectMake(10, self.view.frame.size.height-180, 300, 45);
[saveBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[saveBtn setTitle:@"保存" forState:UIControlStateNormal];
[saveBtn addTarget:self action:@selector(tapSaveBtn) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:saveBtn];
只要记住,有alloc的地方就一定要有release- IOS-手动释放内存问题
- ios gcd 内存释放问题
- eclipse 手动释放内存
- LINUX手动释放内存
- 手动释放ubuntu内存
- php手动释放内存
- CentOS7手动释放内存
- 手动释放Linux内存
- php手动释放内存
- Linux下内存释放问题相关知识续——手动释放内存的伪命题
- 手动释放linux内存cache
- 手动释放linux内存cache
- 手动释放linux内存cache
- 内核手动释放内存方法
- linux手动释放内存2
- 手动释放Linux服务器内存
- Linux之 手动释放内存
- iOS 自动释放手动释放混编
- Oracle SQL查询每组中某个字段最大的那笔资料
- InputStream和Reader的区别
- 传言腾讯入股小米
- 机器学习已成为大数据的基石
- SQL动态执行存储SQL语句
- IOS-手动释放内存问题
- javascript操作cookie
- 字符串搜索算法之Sunday
- MigLayout布局管理器的使用
- ofbiz调试及调试配置
- ArrayList Vector LinkedList 区别与用法
- (无限级、非递归)树形分类
- 华为机试样题解析:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。 编写程序,任意输入两个站点名称,输出最少需要经过的站点数
- 11111111111