ios retain 与 copy 的区别
.retain 與copy區別
?
retain 的僅僅是引用計數加1,但是并沒有創建新的對象。它們的指針是指向相同的內存地址。
copy 是創建一個新的對象作為原來對象的副本,新創建出來的引用計數并沒有加1。
?
copy 有兩中協議 第一種NSCopying 與NSMutableCopying 一種是可變復制,一種是不可變復制 ;
可變是通過 mutableCopy 來實現可變的復制 ;
不可變是通過 copy 直接復制得到;
?
常用復制的的有:NSArray,NSNumber(只有不可變的復制),NSString,NSDictionary,NSMutableArray,NSMutableString,NSMutableDictionary
?
Foundation 可復制的對象,當我copy 的是一個不可變對象的是時候,它相當與retain(沒有實現拷貝);
mutableCopy 拷貝的對象無論是可變的還是不可變的,副本是否為可變的,都實現拷貝。
copy 拷貝對象是可變的,副本是否為可變都實現了拷貝。
要實現copy n 必須實現NSCopying 和NSMutableCopy
1.-(id)copyWithZone:(NSZone *)zone
{
? ? Engine *engine = [[[self class] allocWithZone:zone] init];
? ? return engine;
?
}
2.- (id)mutableCopyWithZone:(NSZone *)zone
轉載于:https://www.cnblogs.com/meixian/p/5370651.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的ios retain 与 copy 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个小型数据库的核心组件
- 下一篇: E-SKILL网络工程师考试认证必备