下表是屬性、所有權(quán)和關(guān)鍵字間的關(guān)系:
| 屬性 | 關(guān)鍵字 | 所有權(quán) |
|---|---|---|
| strong | _strong | 有 |
| weak | _weak | 無 |
| copy | _strong | 有 |
| assign | _unsafe_unretained | 無 |
| retain | _strong | 有 |
| unsafe_unretained | _unsafe_unretained | 無 |
從上表我們可以總結(jié)如下:
1、strong,copy,retain都是對(duì)象的持有者,copy是拷貝對(duì)象的持有者。
2、assign針對(duì)基本類型屬性聲明,不改變屬性的引用計(jì)數(shù)。
3、copy針對(duì)字符串類型屬性聲明
4、strong針對(duì)對(duì)象屬性聲明
5、delegate、outlet屬性聲明使用weak,delegate可以防止循環(huán)引用。
6、weak不會(huì)改變對(duì)象的引用計(jì)數(shù),不是對(duì)象的持有者。當(dāng)對(duì)象銷毀后,weak類型屬性自動(dòng)賦值為nil。
7、關(guān)鍵字用在聲明變量的時(shí)候,說明變量對(duì)對(duì)象的所有權(quán)。