只有強引用才能造成循環(huán)引用。
對于實例變量可以在它前面加上__weak表示弱引用郎哭。
strong是默認的款侵,所以不用特意寫割疾。
局部對象和實例變量在默認情況下都保持對對象的強引用馋艺。
弱引用是需要被緩存的栅干。
對象是可以有weak屬性的,如果該對象的weak屬性被使用了捐祠,那么該對象的weak屬性就不需要被緩存碱鳞,不然的話就會被立即釋放。
因為weak引用具有踱蛀,只有在有strong引用存在的情況下才有意義的特性窿给。所以在不經(jīng)意間被weak引用的對象就可能被釋放,所以在使用weak引用之前一定要確保它所指向的對象沒有被釋放率拒,也就是要判空崩泡。
某些情況下你是無法使用weak的,但是你有需要weak的功能猬膨,這個時候可以使用unsafe_unretained關鍵字來代替weak角撞。這兩者唯一不同的時候unsafe_unretained在沒有強引用存在的情況下并不會把對象置為nil,這就容易引起崩潰勃痴。
被weak引用引用的對象被銷毀的時候應該通知通過該weak引用引用它的那個對象谒所。
最常見的是當一個delegate對象不再被使用的時候,你需要發(fā)送nil給它沛申。