涉及到内存管理问题的都是类类型的变量,而在OC中我们操纵这些对象都是通过操纵指向他们的指针来完成的,一致很多时候会忽略指针存在。比如定义UIView * view = [[UIView alloc]init];然后我们会使用view这个指针来做许多的操作。而由指针带来的一个性质是,当view == nil的时候,是指view这个指针没有指向任何地方,不能代表view指向地方的值是空的。同样当view不为nil的时候,值说明它指向了一个地方,而不能说明它指向的地方有值。僵尸指针就是这样情况,比如:

 UIView * view1 = [[UIView alloc]init];
UIView * view2 = view1; //view1与view2 指向同一个对象内存地址
[view1 release]; //View1指向对象的引用计数为0,对象销毁
[view2 setxxx]; //view1与view2指向的对象此时已销毁,出现野指针,程序崩溃

如果view1 dealloc(销毁)了,内存没了,这时view2依然指向原来的地方,因为指针保存的是指向内存的地址,所以view2不是空的,但view2指向的地方是空的,这时view2就叫僵尸指针(看起来是“活的”,其实已经“死了”)。这时对view2做任何操作,就会程序崩溃。而且最糟糕的事情是,你好不能判断这时view2指向的地方是否内存释放了,因为你根本就不能调用view2。所以除了内存管理上做好之外,还有一个要注意的是释放掉一个内存后,如果这个指针还需要,要么赋新值,要么给个nil。

最新文章

  1. 惩罚因子(penalty term)与损失函数(loss function)
  2. AMD PerfStudio
  3. [shell基础]——paste命令
  4. 动态获取爱奇艺上传视频mp4格式url地址
  5. Poj 2232 Moo Volume(排序)
  6. JAX-WS创建和处理SOAP消息
  7. C#中的系统时间获取问题
  8. vector 遍历
  9. python pdb 调试
  10. JavaFile I/O
  11. oracle xe在centos下的安装(更)
  12. 【转】【Linux】Linux下统计当前文件夹下的文件个数、目录个数
  13. 多线程中实现ApplicationContextAware接口获取需要的bean,applicationContext.getBea未返回也未报错
  14. python 正则匹配时间格式转换方法
  15. django基础之一
  16. 网络对抗技术 2017-2018-2 20152515 Exp5 MSF基础应用
  17. scanf_s,scanf安全版本
  18. BS和CS的区别
  19. oracle数据库之子查询
  20. RANSAC算法在图像拼接上的应用的实现

热门文章

  1. Linux Increase The Maximum Number Of Open Files / File Descriptors (FD)
  2. bootstrap01登录小例子
  3. hdu 3450 Counting Sequences
  4. mysql 安装-编码
  5. 新装的mysql,直接安装板
  6. 多线程 - 线程同步锁(lock、Monitor)
  7. iOS7初体验(1)——第一个应用程序HelloWorld
  8. [转]dos命令 cd命令使用说明[图文说明]
  9. 292. Nim Game(C++)
  10. 【模板】【凸包】Graham_scan