默認(rèn)Foundation框架NSString、NSDictionary、NSArray類都可以調(diào)用copy和mutableCopy實(shí)現(xiàn)拷貝
原因是因?yàn)檫@些類遵守了NSCopying, NSMutableCopying協(xié)議,并實(shí)現(xiàn)了協(xié)議中的方法
自定義繼承NSobject類的實(shí)例對(duì)象想具備cop和mutableCopy功能,需要遵守了NSCopying, NSMutableCopying協(xié)議秕硝,并實(shí)現(xiàn)了協(xié)議中的方法
1.當(dāng)調(diào)用一個(gè)實(shí)例對(duì)象調(diào)用copy方法 系統(tǒng)框架內(nèi)部實(shí)現(xiàn)去調(diào)用該實(shí)例對(duì)象的copyWithZone:方法決定copy返回結(jié)果
- zone參數(shù)是系統(tǒng)已經(jīng)提供的內(nèi)存空間
- (nonnull id)copyWithZone:(nullable NSZone *)zone
{
Person *person = [[Person allocWithZone:zone] init];
person.age = self.age;
person.name = self.name;
return person;
}
2.當(dāng)調(diào)用一個(gè)實(shí)例對(duì)象調(diào)用mutableCopy方法 系統(tǒng)框架內(nèi)部實(shí)現(xiàn)去調(diào)用該實(shí)例對(duì)象的mutableCopyWithZone:方法決定mutableCopy返回結(jié)果
- zone參數(shù)是系統(tǒng)已經(jīng)提供的內(nèi)存空間
- (nonnull id)copyWithZone:(nullable NSZone *)zone
{
Person *person = [[Person allocWithZone:zone] init];
person.age = self.age;
person.name = self.name;
return person;
}
·