1. 程式人生 > >assign和weak之間的區別

assign和weak之間的區別

在MRC中是沒有weak的概念直到ARC中才有weak的出現,而assign是一直存在,兩朝元老:

共同點:

  • 不是強引用, 不能保住OC物件的生命
  • 都可以作用於物件

不同點

  • weak只能作用於物件,不能作用於基本資料型別
  • assign不但能作用於物件還能作用於基本資料型別
  • weak所指向的物件銷燬時會將當前指向物件的指標指向nil,防止野指標的生成
  • assign所指向的物件銷燬時不會將當前指向物件的指標指向nil,有野指標的生成

    所以在ARC中一般資料型別指定為assign而物件則會指定為weak、strong、copy。