最新的assign與weak的區別 看不明白你打我

weixin_34292287發表於2016-05-30
1 能否產生野指標的區別

weak 修飾的變數使用之後,不會產生野指標,因為其指向的資料清空時,變數會自動置空。 weak是安全的。
assign 修飾的變數使用之後如果沒有置空,可能會產生野指標。

2 修飾物件型別的區別

首先資料分為 物件型別(object) 和 非物件型別(CGFLoat,NSInteger)
weak 只可以修飾物件。(如果你修飾非物件型別,編譯器會報錯)
assign 只修飾非物件型別。 當需要修飾物件型別時,MRC時代使用unsafe_unretained。當然,unsafe_unretained也可能產生野指標,所以它名字是"unsafe_***"。現在就用weak基本沒問題了。

相關文章