//聯系人:石虎QQ:1224614774昵稱:嗡嘛呢叭咪哄
一、概念
經常使用copy關鍵字原因:
1、因為父類指針可以指向子類對象,使用copy的目的是為了讓本對象的屬性不受外界影響,使用copy無論給我傳入是一個可變對象還是不可對象,我本身持有的就是一個不可變的副本.
如果改用strong關鍵字,可能造成什么問題?
2、如果我們使用是strong,那么這個屬性就有可能指向一個可變對象,如果這個可變對象在外部被修改了,那么會影響該屬性.
copy使用原理:
3、
-->copy此特質所表達的所屬關系與strong類似。
-->然而設置方法并不保留新值,而是將其“拷貝” (copy)。
-->當屬性類型為NSString時,經常用此特質來保護其封裝性,因為傳遞給設置方法的新值有可能指向一個NSMutableString類的實例。
-->這個類是NSString的子類,表示一種可修改其值的字符串,此時若是不拷貝字符串,那么設置完屬性之后,字符串的值就可能會在對象不知情的情況下遭人更改。
-->所以,這時就要拷貝一份“不可變” (immutable)的字符串,確保對象中的字符串值不會無意間變動。
-->只要實現屬性所用的對象是“可變的” (mutable),就應該在設置新屬性值時拷貝一份。