copy和mutablecpy区别
和唐討論心得
?
我剛才能用copy解決 是因為? 對于系統(tǒng)的非容器類對象,如果對一不可變對象復制,copy是指針復制(淺拷貝)和mutableCopy就是對象復制(深拷貝)。如果是對可變對象復制,都是深拷貝,但是copy返回的對象是不可變的,如果對返回的對象進行可變操作是非法的。(該結論對系統(tǒng)的容器類對象也是成立的,如NSArray, NSString)
?
?Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with appendString:'
我是用NSMutbleString測試的
使用copy后? 復制過來的對象變成不可變了
?
容器的mutablecopy也只是對容器的入口進行復制,多了個入口,其中的對象并沒有復制新的一份。經(jīng)過測試發(fā)現(xiàn)不管是copy還是mutablecopy對于容器里面的內(nèi)容并沒有進行深層的復制。如果改變?nèi)萜髦心硞€對象的值會發(fā)現(xiàn)影響著原始對象的值。
?
update-1.2
唐說這樣的話很容易使用混淆,于是決定使用一個類別來解決此問題
類別請看附件
如何實現(xiàn)自定義對象的(非容器類)深層復制
(arc下)
?
?
結果如下圖:
?
?
轉載于:https://blog.51cto.com/derkin2jessie/1191470
總結
以上是生活随笔為你收集整理的copy和mutablecpy区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery Mobile数据属性
- 下一篇: EIGRP实验--协议工作过程详解(一)