刚开始学的时候是从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