在MRC环境下,假定CTRoom对象是CTPerson的一个成员变量,那么修改CTRoom对象时应注意,代码如下:

- (void) setRoom:(CTRoom *) room
{
   //需判断新旧值是否相等,一旦相等则[_room release]等价于[room release],那么[room retain]将抛出异常。
if(_room != room){
[_room release]; //释放旧值
_room = [room retain];  //retain新值
}
}

- (void) dealloc

{

//    [_room release];

//    _room = nil;

self.room = nil; //同时,这一句代码等效前面两句

[super dealloc];]

}

 
    CTPerson *person = [[CTPerson alloc] init];
CTRoom *r = [[CTRoom alloc] init];
[person setRoom:r];
[r release];
person.room = r;
[person release];

最新文章

  1. VNC安装与使用
  2. Nginx作为负载均衡服务器(Windows环境)
  3. git merge简介【转】
  4. CodeForces 709B Checkpoints (数学,最短路)
  5. 安卓弹出对话框——Alertdialog
  6. java 读取文件到String(解决中文乱码)
  7. JS将搜索的关键字高亮显示实现代码
  8. Mysql常用命令和常用函数
  9. js document
  10. day4、Linux基础题目
  11. 百度纯CSS生成菜单
  12. Python程序打包—pyinstaller
  13. Thinkphp5笔记九:路由设置,隐藏indx.php
  14. docker link 过时不再用了?那容器互联、服务发现怎么办?
  15. 六位数随机验证 sms_code.py
  16. jquery对象和DOM对象转换
  17. Hystrix的用法demo
  18. java 实现共享锁和排它锁
  19. Flask入门文件上传flask-uploads(八)
  20. Python——并发编程

热门文章

  1. c++ 弧度值与角度值的转换
  2. Exception in thread "main" java.lang.ClassNotFoundException: 解决方法
  3. 问题-[Delphi]通过Map文件查找内存地址出错代码所在行
  4. position与anchorPoint
  5. 手动建立数据库连接的BaseDAO
  6. Java- 类型转换
  7. git 删除分支和删除文件夹
  8. java Graphics2D 画图
  9. Rediss_基本介绍
  10. 把DataTable 转换成Json格式,适用于EasyUI 绑定DataGrid