IOS开发之内存管理(2)
2016-05-16 19:22
357 查看
#import "Person.h" @implementation Person - (void)setBook:(Book*)book { _book = [book retain]; } - (Book*)book { return _book; } - (void)dealloc { [_book release]; NSlog(@"Person 对象被回收了!"); [super dealloc]; } @end; #import<Foundation/Foundation.h> #import "Person.h" #import "Book.h" int main () { Book *b = [[Book alloc]init]; //创建b对象,计数器为1 Person *P = [[Person alloc]init];//创建p对象,该计数器为1 IOS开发之内存管理(2) - 指尖飞码 - 矜持的猴子的博客 [p setBook:b]; IOS开发之内存管理(2) - 指尖飞码 - 矜持的猴子的博客 [b release]; //b的计数器减1; b = nil; //b的指向消失 [p release]; //p对象就没了,此时调用dealloc方法,先把b对象给释放了,接着自己也消失了; return 0; }
1.你想使用某个对象,就应该让对象的计数器+1(让对象做一次retain操作);
2.你不想再使用某个对象,就应该让对象的计数器-1(让对象做一次release);
3.谁retain ,谁release;
4.谁alloc,谁release;
内存管理代码规范:
1.只要调用了alloc,必须有release(autorelease)
2.set方法的代码规范
1>基本数据类型:直接复制
-(void)setAge:(int )age { _age = age; }
2>oc对象类型
- (void)setCar:(Car*)car { //1.先判断是不是新传进来的对象; if(car != _car) { //2.对旧对象做一次release [_car release]; //3.对新对象做一次retain _car = [car retain ]; } }3.dealloc方法的代码规范
1》一定要[super dealloc],而且放在后面;
2》对self(当前)所拥有的其他对象做一次release;
- (void)dealloc { [_car release]; [super dealloc]; }
相关文章推荐
- IOS开发学习之内存管理
- ios 调用系统照片库/拍照/录像
- iOS百度地图比例,及自定义popview图片偏移设置
- IOS学习之NSNotificationCenter消息机制
- IOS开发资料汇总
- iOS的NSString常用方法总结
- iOS每个Cell倒计时
- Learning methods - 2
- iOS五种页面传值方式
- ios中的数据存储方式
- IOS开发根据字体大小等获取文字所占的高度
- iOS后台运行机制-实践总结
- ios 推送 证书配置
- iOS设置圆角性能问题
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端三)
- nagios定义模板
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端二)
- 在IOS中NSRange类的详细介绍
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
- ios 音乐播放器