涉及到内存管理问题的都是类类型的变量,而在OC中咱们操纵这些对象都是经过操纵指向他们的指针来完成的,一致不少时候会忽略指针存在。好比定义UIView * view = [[UIView alloc]init];而后咱们会使用view这个指针来作许多的操做。而由指针带来的一个性质是,当view == nil的时候,是指view这个指针没有指向任何地方,不能表明view指向的地方的值是空的。一样当view不为nil的时候,值说明它指向了一个地方,而不能说明它指向的地方有值。僵尸指针就是这样状况,好比:spa
UIView * view1 = [[UIView alloc]init]; UIView * view2 = view1;若是后来view1 dealloc了,内存没了,这时view2依然指向原来的地方,由于指针保存的是指向内存的地址,因此view2不是空的,但view2指向的地方是空的,这时view2就叫僵尸指针(看起来是“活的”,其实已经“死了”)。这时对view2作任何操做,就会程序崩溃。并且最糟糕的事情是,你好不能判断这时view2指向的地方是否内存释放了,由于你根本就不能调用view2。因此除了内存管理上作好以外,还有一个要注意的是释放掉一个内存后,若是这个指针还须要,要么赋新值,要么给个nil。