<NSCoding>和<NSCopy>

1.<NSCoding> ?存儲一個model

ProductModel* productModel=[[ProductModelalloc]init];

productModel.title=@"小黃人自行車";

productModel.image=@"xx";

//立馬崩潰只能存儲對象

// [[NSUserDefaults standardUserDefaults] setObject:productModel forKey:@"STORE_PRODUCT"];

//如果沒有實現(xiàn)encoding也會崩潰,會提示沒有實現(xiàn)encodeWithCoder

NSData*data=[NSKeyedArchiverarchivedDataWithRootObject:productModel];

[[NSUserDefaultsstandardUserDefaults]setObject:dataforKey:@"STORE_PRODUCT"];

NSData*unData = [[NSUserDefaultsstandardUserDefaults]objectForKey:@"STORE_PRODUCT"];

ProductModel* unProductModel=[NSKeyedUnarchiverunarchiveObjectWithData:unData];

NSLog(@"title:%@",unProductModel.title);


- (nullableinstancetype)initWithCoder:(NSCoder*)aDecoder

{

self= [superinit];

if(self)

{

self.title= [aDecoderdecodeObjectForKey:@"title"];

self.image=[aDecoderdecodeObjectForKey:@"image"];

}

returnself;

}

- (void)encodeWithCoder:(NSCoder*)aCoder

{

[aCoderencodeObject:self.titleforKey:@"title"];

[aCoderencodeObject:self.imageforKey:@"image"];

}


2.<NSCopy> ?復(fù)制對象。


如果自定義類具有可變和不可變的區(qū)別,就需要同時實現(xiàn)NSCopying和NSMutableCopying,在- (id)copyWithZone:(NSZone *)zone返回的是不可變對象,在- (id)mutableCopyWithZone:(NSZone *)zone返回的是可變對象。

如果 [ ?xx ?copy ]沒有實現(xiàn)copy協(xié)議。會出現(xiàn) [xx ?copyWithZone:]立馬崩潰。

ProductModel* productModel2=[productModel1 copy];

productModel2.title=@"ofo共享單車";

NSLog(@"title1:%@title2:%@",productModel1.title,productModel2.title);

NSLog(@"");

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

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

  • 1.自定義控件 a.繼承某個控件 b.重寫initWithFrame方法可以設(shè)置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,713評論 2 4
  • 1.不可變數(shù)組轉(zhuǎn)變?yōu)榭勺償?shù)組聲明實例變量的數(shù)組 必須記得實現(xiàn) 對于遍歷數(shù)組找到對象后 如果還需要查找 記得先結(jié)束 ...
    小新xin閱讀 1,042評論 0 1
  • 本文為轉(zhuǎn)載: 作者:zyydeveloper 鏈接:http://www.itdecent.cn/p/5f776a...
    Buddha_like閱讀 1,024評論 0 2
  • 【2017年最新】? iOS面試題及答案 設(shè)計模式是什么? 你知道哪些設(shè)計模式,并簡要敘述? 設(shè)計模式是一種編碼經(jīng)...
    紫色冰雨閱讀 726評論 0 1
  • 《人民的名義》——大風(fēng)廠股權(quán)之爭 2017-04-08 任務(wù)之外 陵阪 《人民的名義》正在熱播,成為這幾天茶余飯后...
    任務(wù)之外閱讀 976評論 0 0

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