iOS 面試題~用@property聲明NSString(或NSArray,NSDictionary)經常使用copy關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?

//聯系人:石虎QQ:1224614774昵稱:嗡嘛呢叭咪哄

一、概念

經常使用copy關鍵字原因:

1、因為父類指針可以指向子類對象,使用copy的目的是為了讓本對象的屬性不受外界影響,使用copy無論給我傳入是一個可變對象還是不可對象,我本身持有的就是一個不可變的副本.

如果改用strong關鍵字,可能造成什么問題?

2、如果我們使用是strong,那么這個屬性就有可能指向一個可變對象,如果這個可變對象在外部被修改了,那么會影響該屬性.

copy使用原理:

3、

-->copy此特質所表達的所屬關系與strong類似。

-->然而設置方法并不保留新值,而是將其“拷貝” (copy)。

-->當屬性類型為NSString時,經常用此特質來保護其封裝性,因為傳遞給設置方法的新值有可能指向一個NSMutableString類的實例。

-->這個類是NSString的子類,表示一種可修改其值的字符串,此時若是不拷貝字符串,那么設置完屬性之后,字符串的值就可能會在對象不知情的情況下遭人更改。

-->所以,這時就要拷貝一份“不可變” (immutable)的字符串,確保對象中的字符串值不會無意間變動。

-->只要實現屬性所用的對象是“可變的” (mutable),就應該在設置新屬性值時拷貝一份。

謝謝!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容