關於OC中的殭屍指針(野指針)

         涉及到內存管理問題的都是類類型的變量,而在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。
相關文章
相關標籤/搜索