天天看點

copy 與 retain 的差別

  • copy: 建立一個索引計數為1的對象,然後釋放舊對象
  • retain:釋放舊的對象,将舊對象的值賦予輸入對象,再提高輸入對象的索引計數為1

那上面的是什麼意思呢?

Copy其實是建立了一個相同的對象,而retain不是:

比如一個NSString對象,位址為0×1111,内容為@”STR”

Copy到另外一個NSString之 後,位址為0×2222,内容相同,新的對象retain為1, 舊有對象沒有變化

retain到另外一個NSString之 後,位址相同(建立一個指針,指針拷貝),内容當然相同,這個對象的retain值+1

也就是說,retain是指針拷貝,copy是内容拷貝。