亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS/Objective-C開發字典NSDictionary的深復制(使用category)

2019-11-14 20:03:39
字體:
來源:轉載
供稿:網友

目標:把NSDictionary對象轉換成NSMutableDictionary對象,對象內容是字符串數組,需要實現完全復制(深復制)。 

如果調用NSDictionary的mutableCopy方法,可以得到一個NSMutableDictionary對象,但這只是淺復制,如果我們修改NSDictionary中數組內的值(當然,數組必須是NSMutableArray),會發現,NSMutableDictionary對象內數組的值也跟著更改了。我們需要增加一個mutableDeepCopy方法來實現深復制,在該方法中,循環復制每一個元素。 

要實現這一功能,有兩種方法,一是繼承,二是使用category。category與繼承的區別在于,使用category并不是新建一個類,而是在原類的基礎上增加一些方法(使用的時候還是用原類名),這樣,我們就不需要修改已經在其他源文件中寫好的類名,只需要導入h頭文件,再把復制方法修改成我們新增的方法即可。 

一、新建Objective-C category文件,我這Category填MutableDeepCopy,Category on填NSDictionary,所以生成的文件是NSDictionary+MutableDeepCopy.h和NSDictionary+MutableDeepCopy.m,生成的文件名很容易理解。 

二、兩文件源代碼: 

NSDictionary+MutableDeepCopy.h 

C++代碼  收藏代碼
  1. #import <Foundation/Foundation.h>  
  2.    
  3. @interface NSDictionary (MutableDeepCopy)  
  4. -(NSMutableDictionary *)mutableDeepCopy;  
  5. //增加mutableDeepCopy方法  
  6. @end  


NSDictionary+MutableDeepCopy.m: 

C++代碼  收藏代碼
  1. #import "NSDictionary+MutableDeepCopy.h"  
  2.    
  3. @implementation NSDictionary (MutableDeepCopy)  
  4. -(NSMutableDictionary *)mutableDeepCopy  
  5. {  
  6.     NSMutableDictionary *dict=[[NSMutableDictionary alloc] initWithCapacity:[self count]];  
  7.     //新建一個NSMutableDictionary對象,大小為原NSDictionary對象的大小  
  8.     NSArray *keys=[self allKeys];  
  9.     for(id key in keys)  
  10.     {//循環讀取復制每一個元素  
  11.         id value=[self objectForKey:key];  
  12.         id copyValue;  
  13.         if ([value respondsToSelector:@selector(mutableDeepCopy)]) {  
  14.             //如果key對應的元素可以響應mutableDeepCopy方法(還是NSDictionary),調用mutableDeepCopy方法復制  
  15.             copyValue=[value mutableDeepCopy];  
  16.         }else if([value respondsToSelector:@selector(mutableCopy)])  
  17.         {  
  18.             copyValue=[value mutableCopy];  
  19.         }  
  20.         if(copyValue==nil)  
  21.             copyValue=[value copy];  
  22.         [dict setObject:copyValue forKey:key];  
  23.    
  24.     }  
  25.     return dict;  
  26. }  
  27. @end  

 

 

測試: 

 

 

C++代碼  收藏代碼
  1. #import <Foundation/Foundation.h>  
  2. #import "NSDictionary+MutableDeepCopy.h"  
  3. //導入頭文件  
  4. int main (int argc, const char * argv[])  
  5. {  
  6.    
  7.     @autoreleasepool {  
  8.         NSMutableArray *arr1=[[NSMutableArray alloc] initWithObjects:@"aa",@"bb",@"cc", nil];  
  9.         NSDictionary *dict1=[[NSDictionary alloc] initWithObjectsAndKeys:arr1,@"arr1", nil];  
  10.         NSLog(@"%@",dict1);  
  11.         NSMutableDictionary *dict2=[dict1 mutableCopy];  
  12.         //淺復制  
  13.         NSMutableDictionary *dict3=[dict1 mutableDeepCopy];  
  14.         //深復制  
  15.         [arr1 addObject:@"dd"];  
  16.         NSLog(@"%@",dict2);  
  17.         NSLog(@"%@",dict3);  
  18.    
  19.     }  
  20.     return 0;  
  21. }  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久手机精品视频| 国产精品777| 成人福利视频在线观看| 久久久免费观看视频| 国产午夜精品一区二区三区| 亚州成人av在线| 久久99久国产精品黄毛片入口| 欧美疯狂做受xxxx高潮| 亚洲一区二区三区乱码aⅴ| 日韩有码在线电影| 亚洲日本aⅴ片在线观看香蕉| 精品国产区一区二区三区在线观看| 亚洲国产成人久久| 中文字幕在线精品| 欧美精品在线第一页| 久久久久久久久网站| 亚洲欧美在线免费观看| 国产a∨精品一区二区三区不卡| 一区二区三区亚洲| 欧美精品久久久久a| 亚洲男人天堂手机在线| 久久理论片午夜琪琪电影网| 日韩国产高清污视频在线观看| 性色av一区二区三区红粉影视| 久久久日本电影| 亚洲网站在线观看| 成人午夜在线观看| 亚洲第一在线视频| 日韩精品欧美国产精品忘忧草| 中文字幕不卡av| 国产精品aaa| 国产成人精品免费视频| 国产精品极品尤物在线观看| 久久精视频免费在线久久完整在线看| 欧美视频一二三| 日韩av免费看网站| 亚洲情综合五月天| 国自产精品手机在线观看视频| 精品国产乱码久久久久久婷婷| 成人伊人精品色xxxx视频| 4438全国亚洲精品在线观看视频| 日本成熟性欧美| 66m—66摸成人免费视频| 亚洲www在线| 2019精品视频| 亚洲精品视频在线观看视频| 欧美高清无遮挡| 国产成人在线视频| 97精品在线视频| 欧美激情视频网| 亚洲xxx自由成熟| 456亚洲影院| 欧美国产在线电影| 欧美激情精品久久久久久变态| 日韩av手机在线观看| 美女视频久久黄| 亚洲精品视频在线播放| 日韩福利视频在线观看| 人体精品一二三区| 午夜免费在线观看精品视频| 欧美一级片免费在线| 色一情一乱一区二区| 日韩亚洲一区二区| 亚洲一区二区三区视频| 亚洲天堂网在线观看| 在线亚洲午夜片av大片| 亚洲精品自拍视频| 国产精品高清免费在线观看| 午夜精品一区二区三区在线| 欧美最猛性xxxxx免费| 日韩av手机在线观看| 欧美韩国理论所午夜片917电影| 热门国产精品亚洲第一区在线| 这里只有视频精品| 91精品国产91久久久久久最新| 国产精品欧美亚洲777777| 国产精品久久久久久久久久免费| 日韩精品中文字幕视频在线| 亚洲精品理论电影| 成人精品视频99在线观看免费| 亚洲天堂精品在线| 永久免费毛片在线播放不卡| 欧美激情精品久久久久久蜜臀| 亚洲视频国产视频| www.亚洲免费视频| 国产精品网红福利| 欧美色视频日本版| 26uuu亚洲国产精品| 日本欧美爱爱爱| 久久久久北条麻妃免费看| 中文字幕日韩精品在线| 久久久噜噜噜久久中文字免| 日韩av手机在线| 久久精品影视伊人网| 亚洲第一区中文字幕| xvideos成人免费中文版| 欧美午夜激情视频| 久久精品成人一区二区三区| 国内精品久久久久久久久| 精品国产一区二区三区久久狼5月| 91精品国产乱码久久久久久久久| 日本精品久久电影| 92版电视剧仙鹤神针在线观看| 性色av香蕉一区二区| 久久国产精品影视| 2021国产精品视频| 久久国产精品久久久久久| 久久69精品久久久久久国产越南| 性金发美女69hd大尺寸| 日韩在线资源网| 国产日韩一区在线| 欧美综合一区第一页| 91成人免费观看网站| 欧美xxxwww| 中文字幕亚洲综合久久筱田步美| 91av视频导航| 国产精品高潮呻吟久久av野狼| 欧亚精品在线观看| 亚洲激情成人网| 日韩欧美中文字幕在线观看| 日韩欧美视频一区二区三区| 777国产偷窥盗摄精品视频| 色综合亚洲精品激情狠狠| 欧美一级淫片播放口| 96pao国产成视频永久免费| 日韩精品视频中文在线观看| 国产精品爽爽ⅴa在线观看| 亚洲国产精品va在线| 精品久久久久国产| 在线播放国产精品| 青青草原成人在线视频| 伊人av综合网| 亚洲欧洲国产伦综合| 色哟哟网站入口亚洲精品| 国产婷婷色综合av蜜臀av| 91免费国产网站| 国产99久久久欧美黑人| 久久久爽爽爽美女图片| 精品国产999| 成人在线激情视频| 欧美日本中文字幕| 久久精品国产精品亚洲| 欧美精品激情在线观看| 亚洲第一精品夜夜躁人人爽| 亚洲人成网站在线播| 久久中文久久字幕| 77777少妇光屁股久久一区| 日韩在线观看免费高清完整版| 在线电影中文日韩| 欧美成人h版在线观看| 成人性生交大片免费观看嘿嘿视频| 91最新国产视频| 国内精品久久久久久久久| 欧美视频裸体精品| 97成人在线视频| 91香蕉国产在线观看| 青青草99啪国产免费| 成人啪啪免费看| 欧美电影免费观看网站| 欧美国产中文字幕| 97在线看免费观看视频在线观看| 国产精品久久久久99| 欧美激情精品久久久久久免费印度| 亚洲精品第一国产综合精品|