淺拷貝:將對(duì)象的內(nèi)存地址進(jìn)行拷貝讲衫,不會(huì)生成一份新的內(nèi)存地址亚皂。其生成對(duì)象與原有對(duì)象會(huì)公用同一份內(nèi)存地址 但是它不會(huì)改變引用計(jì)數(shù)器 只會(huì)讓此內(nèi)存保持原有引用計(jì)數(shù)就珠,其所指向的內(nèi)容是一致的蛉威。
深拷貝:將對(duì)象的內(nèi)存地址所指向內(nèi)容進(jìn)行拷貝仿荆,生成一份新的內(nèi)存地址指向這份拷貝出來(lái)的內(nèi)容臊泌。其生成對(duì)象與原有對(duì)象分別使用不同的地址鲤桥,所指向的內(nèi)容也不一致,其所指向的內(nèi)容應(yīng)該是拷貝出來(lái)的另一份全新內(nèi)容渠概。
strong: 在 set 方法中 ARC 系統(tǒng)會(huì)自動(dòng)幫我們加入對(duì) 新值 retain 使其引用計(jì)數(shù)器 + 1 的代碼茶凳, 并且對(duì)舊 值進(jìn)行 release 使其引用計(jì)數(shù)器 - 1 的代碼。
copy: 在 set 方法中 ARC 系統(tǒng)會(huì)自動(dòng)幫我們加入對(duì) 新值 copy 的代碼播揪。引用計(jì)數(shù)器不變贮喧。
weak: 在 set 方法中 ARC 系統(tǒng)不會(huì)調(diào)用 引用計(jì)數(shù)器相關(guān)的 代碼執(zhí)行, 只是簡(jiǎn)單的賦值而已猪狈,所以其引用計(jì)數(shù)器不會(huì)改變箱沦。其為OC對(duì)象。
assign:在 set 方法中 ARC 系統(tǒng)不會(huì)調(diào)用 引用計(jì)數(shù)器相關(guān)的 代碼執(zhí)行雇庙, 只是簡(jiǎn)單的賦值而已谓形,計(jì)數(shù)器不會(huì)改變灶伊。其為非OC對(duì)象。
下面用兩張圖來(lái)總結(jié)下: