深拷貝與前拷貝的理解

深.淺拷貝
copy/mutableCopy NSString

NSString *string = @"漢斯哈哈哈";
// 沒(méi)有產(chǎn)生新對(duì)象
NSString *copyString = [string copy];
// 產(chǎn)生新對(duì)象
NSMutableString *mutableCopyString = [string mutableCopy];

NSLog(@"string = %p copyString = %p mutableCopyString = %p", string, copyString, mutableCopyString);

string = 0x1020e42b0 
 copyStirng = 0x1020e42b0 
 mutableCopyString = 0x7fe711c23370

copy/mutableCopy NSMutableString

NSMutableString *string = [NSMutableString stringWithString:@"漢斯哈哈哈"];

// 產(chǎn)生新對(duì)象
NSString *copyString = [string copy];
// 產(chǎn)生新對(duì)象
NSMutableString *mutableCopyString = [string mutableCopy];

NSLog(@"string = %p copyString = %p mutableCopyString = %p", string, copyString, mutableCopyString);

 string = 0x7fe711d911f0 
 copyStirng = 0x1020e42b0 
 mutableCopyString = 0x7fe711d09410

注意:其他對(duì)象NSArray、NSMutableArray 、NSDictionary、NSMutableDictionary一樣適用

#import <Foundation/Foundation.h>@interface HSPerson : NSObject@property (nonatomic, copy) NSString *name;@end

NSMutableString *string = [NSMutableString stringWithFormat:@"漢斯哈哈哈"];
HSPerson *person = [[HSPerson alloc] init];
person.name = string;// 不能改變person.name的值,因?yàn)槠鋬?nèi)部copy新的對(duì)象
[string appendString:@" hans"]; NSLog(@"name = %@", person.name);



@property (nonatomic, strong) NSString *name;

NSMutableString *string = [NSMutableString stringWithFormat:@"漢斯哈哈哈"];
HSPerson *person = [[HSPerson alloc] init];
person.name = string;// 可以改變person.name的值,因?yàn)槠鋬?nèi)部沒(méi)有生成新的對(duì)象
[string appendString:@" hans"];
NSLog(@"name = %@", person.name);



最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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