assign 和 weak 區別?

weixin_33806914發表於2016-07-10

assign

自動生成: __unsafe_unretained  
1.不是強引用 不能保住OC物件的命
2.如果引用的OC物件銷燬了,指標並不會被自動清空,依然指向銷燬的物件(很容易產生野指標錯誤 : EXC_BAD_ACCESS)

weak

生成:  _Nullable__weak
1.不是強引用,不能保住OC物件的命
2.如果引用的OC物件銷燬了,指標被自動清空(變為nil),不再指向銷燬的物件(永遠不會產生野指標錯誤)

用途

  • assign 一般用在基本資料型別上面,你如int\double等
  • weak 一般用在代理物件上面,或者用在解決迴圈引用的問題
  • assign 的速度 > weak.

相關文章