1.在ARC模式下回官,在有可能出現循環(huán)引用時曹宴,讓其一端使用weak修飾。例如:delegate(代理)屬性
2.自身已經對它強引用一次了歉提,沒有必再強引用一次使用weak解決笛坦。例如:自定義IBOutlet控件屬性
- 兩者區(qū)別:
1.weak只能用于修飾對象類型,基本數據類型不能使用
2.assign修飾對象和基本數據類型都可以,但是只是簡單地進行賦值操作而已
注意:assign修飾的對象(一般編譯的時候會產生警告:Assigning retained object to unsafe property; object will be released after assignment)在釋放之后苔巨,指針的地址還是存在的版扩,也就是說指針并沒有被置為nil,造成野指針侄泽。對象一般分配在堆上的某塊內存礁芦,如果在后續(xù)的內存分配中,剛好分到了這塊地址,程序就會崩潰掉柿扣。
那為什么可以用assign修飾基本數據類型肖方?因為基礎數據類型一般分配在棧上,棧的內存會由系統自己自動處理未状,不會造成野指針俯画。
weak修飾的對象在釋放之后,指針地址會被置為nil司草。所以現在一般弱引用就是用weak艰垂。