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

因為父類指針可以指向子類對象,使用copy目的是為了讓本對象的屬性不受外界的影響,使用copy無論是給我傳入一個可變對象還是不可變對象,我本身持有的都是一個不可變的副本。
如果我們使用的是strong 的話,那么這個屬性如果指向一個可變對象,可變對象在外部被修改的時候,會影響本身的屬性。

copy 所表達的所屬關系與strong 類似,但是copy設置方法并不保留新值。當屬性為NSString 時,因為傳遞給設置方法的新值有可能指向一個NSMutableString 類的實例。這個類是 NSString 的子類,此時若是不拷貝字符串,那么設置完屬性之后,字符串的值就可能會在對象不知道的情況下被更改。

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

推薦閱讀更多精彩內(nèi)容