目標:把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
NSDictionary+MutableDeepCopy.m:
測試:
新聞熱點
疑難解答