assign和weak的區(qū)別
- 本質(zhì)區(qū)別
- 速度比較: __unsafe_unretained > __weak
@property (nonatomic, assign) Person *person; *__unsafe_unretained _person;
__unsafe_unretained的特點(diǎn):
1.不是強(qiáng)引用, 不能保住OC對(duì)象的命
2.如果引用的OC對(duì)象銷毀了, 指針并不會(huì)被自動(dòng)清空, 依然指向銷毀的對(duì)象(很容易產(chǎn)生野指針錯(cuò)誤: EXC_BAD_ACCESS)
@property (nonatomic, weak) Person *person; // Person * _Nullable __weak _person;
__weak的特點(diǎn):
1.不是強(qiáng)引用, 不能保住OC對(duì)象的命
2.如果引用的OC對(duì)象銷毀了, 指針會(huì)被自動(dòng)清空(變?yōu)閚il), 不再指向銷毀的對(duì)象(永遠(yuǎn)不會(huì)產(chǎn)生野指針錯(cuò)誤)
- 用途
- assign一般用在基本數(shù)據(jù)類型上面, 比如int\double等
- weak一般用在代理對(duì)象上面, 或者用來解決循環(huán)強(qiáng)引用的問題
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者