diff --git a/Foundation/CPDictionary.j b/Foundation/CPDictionary.j index f805282f2..0b742c98c 100755 --- a/Foundation/CPDictionary.j +++ b/Foundation/CPDictionary.j @@ -316,7 +316,7 @@ */ - (CPArray)allKeys { - return _keys; + return [_keys copy]; } /*! @@ -475,7 +475,7 @@ var index = keysForRemoval.length; while (index--) - self.removeValueForKey(keysForRemoval[index]); + [self removeObjectForKey:keysForRemoval[index]]; } /* diff --git a/Foundation/CPKeyValueObserving.j b/Foundation/CPKeyValueObserving.j index 9662d5064..5612adaf2 100644 --- a/Foundation/CPKeyValueObserving.j +++ b/Foundation/CPKeyValueObserving.j @@ -226,7 +226,7 @@ var kvoNewAndOld = CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld, var currentClass = _nativeClass, kvoClassName = "$KVO_"+class_getName(_nativeClass), existingKVOClass = objj_lookUpClass(kvoClassName); - + if (existingKVOClass) { _targetObject.isa = existingKVOClass; @@ -247,6 +247,18 @@ var kvoNewAndOld = CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld, class_addMethod(kvoClass, method_getName(method), method_getImplementation(method), ""); } + if ([_targetObject isKindOfClass:[CPDictionary class]]) + { + var methodList = _CPKVOModelDictionarySubclass.method_list, + count = methodList.length; + + for (var i=0; i