//聯(lián)系人:石虎QQ:1224614774昵稱:嗡嘛呢叭咪哄
一哼绑、概念
經(jīng)常使用copy關(guān)鍵字原因:
1岩馍、因?yàn)楦割愔羔樋梢灾赶蜃宇悓ο?使用copy的目的是為了讓本對象的屬性不受外界影響,使用copy無論給我傳入是一個(gè)可變對象還是不可對象,我本身持有的就是一個(gè)不可變的副本.
如果改用strong關(guān)鍵字,可能造成什么問題抖韩?
2蛀恩、如果我們使用是strong,那么這個(gè)屬性就有可能指向一個(gè)可變對象,如果這個(gè)可變對象在外部被修改了,那么會(huì)影響該屬性.
copy使用原理:
3、
-->copy此特質(zhì)所表達(dá)的所屬關(guān)系與strong類似茂浮。
-->然而設(shè)置方法并不保留新值双谆,而是將其“拷貝” (copy)。
-->當(dāng)屬性類型為NSString時(shí)励稳,經(jīng)常用此特質(zhì)來保護(hù)其封裝性佃乘,因?yàn)閭鬟f給設(shè)置方法的新值有可能指向一個(gè)NSMutableString類的實(shí)例。
-->這個(gè)類是NSString的子類驹尼,表示一種可修改其值的字符串趣避,此時(shí)若是不拷貝字符串,那么設(shè)置完屬性之后新翎,字符串的值就可能會(huì)在對象不知情的情況下遭人更改程帕。
-->所以,這時(shí)就要拷貝一份“不可變” (immutable)的字符串地啰,確保對象中的字符串值不會(huì)無意間變動(dòng)愁拭。
-->只要實(shí)現(xiàn)屬性所用的對象是“可變的” (mutable),就應(yīng)該在設(shè)置新屬性值時(shí)拷貝一份亏吝。