ios - assign retain copy

NSString *str = [[NSString alloc] initWithString:@"aaa"];

str 分配的地址如下:

str 變量地址: 0x7fff5fbff878 , str 內(nèi)容地址: 0x100001030


assign


NSString *str2 = [str assign];

str2 和 str 完全相同(變量地址、內(nèi)容地址),不增加 retainCount

assign一般用于基礎(chǔ)數(shù)據(jù)類型 (NSInteger,CGFloat)和C數(shù)據(jù)類型(int, float, double, char)等等


retain


NSString *str3 = [str retain];

str3 和 str 的變量地址相同,指向相同的內(nèi)容地址,str 的retainCount增加1

此對(duì)象只能用于Object-c對(duì)象類型,而不能用于Core Foundation對(duì)象。

(基本數(shù)據(jù)類型 和 CoreFoundation 對(duì)象都沒(méi)有引用計(jì)數(shù))

當(dāng)把對(duì)象添加到 數(shù)組中時(shí),被添加對(duì)象的引用計(jì)數(shù)+1


copy


NSString *str4 = [str copy];

str4 變量地址: 0x7fff5fbff868 與str 不相同,指向相同的內(nèi)容地址,str4的

retainCount增加1

一般用于NSString


總結(jié):

assign 不增加retainCount 多個(gè)對(duì)象共享一個(gè)內(nèi)存塊?

retain 指針拷貝(變量地址、內(nèi)容地址相同) 對(duì)象的retainCount+1

copy 內(nèi)容拷貝(變量地址不同、內(nèi)容地址相同) 新對(duì)象的retainCount +1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容