diff --git a/Foundation/CPArray+KVO.j b/Foundation/CPArray+KVO.j index 15b787405..d75d618a8 100644 --- a/Foundation/CPArray+KVO.j +++ b/Foundation/CPArray+KVO.j @@ -83,16 +83,17 @@ + (id)alloc { - var a = []; - a.isa = self; - + var array = []; + + array.isa = self; + var ivars = class_copyIvarList(self), count = ivars.length; while (count--) - a[ivar_getName(ivars[count])] = nil; + array[ivar_getName(ivars[count])] = nil; - return a; + return array; } -(id)initWithKey:(id)aKey forProxyObject:(id)anObject @@ -293,20 +294,6 @@ [self _setRepresentedObject:target]; } -- (CPArray)objectsAtIndexes:(CPIndexSet)indexes -{ - var index = [indexes firstIndex], - objects = []; - - while(index != CPNotFound) - { - [objects addObject:[self objectAtIndex:index]]; - index = [indexes indexGreaterThanIndex:index]; - } - - return objects; -} - @end diff --git a/Foundation/CPArray.j b/Foundation/CPArray.j index d4463e170..d9ab4dd78 100755 --- a/Foundation/CPArray.j +++ b/Foundation/CPArray.j @@ -657,7 +657,7 @@ rhs = anArray[index]; // If they're not equal, and either doesn't have an isa, or they're !isEqual (not isEqual) - if (lhs !== rhs && (!lhs.isa || !rhs.isa || ![lhs isEqual:rhs])) + if (lhs !== rhs && (lhs && !lhs.isa || rhs && !rhs.isa || ![lhs isEqual:rhs])) return NO; } @@ -816,7 +816,7 @@ if (index === 0) description += '\n'; - var object = self[index], + var object = [self objectAtIndex:index], objectDescription = object && object.isa ? [object description] : object + ""; description += "\t" + objectDescription.split('\n').join("\n\t"); diff --git a/Foundation/CPKeyValueObserving.j b/Foundation/CPKeyValueObserving.j index 29db06029..b88f766a0 100644 --- a/Foundation/CPKeyValueObserving.j +++ b/Foundation/CPKeyValueObserving.j @@ -236,7 +236,6 @@ var kvoNewAndOld = CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld, var kvoClass = objj_allocateClassPair(currentClass, kvoClassName); objj_registerClassPair(kvoClass); - _class_initialize(kvoClass); //copy in the methods from our model subclass var methodList = _CPKVOModelSubclass.method_list, @@ -422,8 +421,8 @@ var kvoNewAndOld = CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld, if (type == CPKeyValueChangeReplacement || type == CPKeyValueChangeInsertion) { //FIXME: do we need to go through and replace "" with CPNull? - var oldValues = [[_targetObject mutableArrayValueForKeyPath:aKey] objectsAtIndexes:indexes]; - [changes setValue:oldValues forKey:CPKeyValueChangeNewKey]; + var newValues = [[_targetObject mutableArrayValueForKeyPath:aKey] objectsAtIndexes:indexes]; + [changes setValue:newValues forKey:CPKeyValueChangeNewKey]; } } else @@ -436,7 +435,7 @@ var kvoNewAndOld = CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld, [changes setObject:newValue forKey:CPKeyValueChangeNewKey]; } } - + var observers = [_observersForKey[aKey] allValues], count = observers ? observers.length : 0; diff --git a/Objective-J/Runtime.js b/Objective-J/Runtime.js index d5cf52694..90d8bf699 100644 --- a/Objective-J/Runtime.js +++ b/Objective-J/Runtime.js @@ -570,7 +570,7 @@ exports.objj_lookUpClass = objj_lookUpClass; exports.objj_getClass = objj_getClass; exports.objj_getMetaClass = objj_getMetaClass; -exports.ivar_getName = ivar_getTypeEncoding; +exports.ivar_getName = ivar_getName; exports.ivar_getTypeEncoding = ivar_getTypeEncoding; exports.objj_msgSend = objj_msgSend; diff --git a/Tests/Foundation/CPKVOTest.j b/Tests/Foundation/CPKVOTest.j index 3667efca4..01eb83205 100644 --- a/Tests/Foundation/CPKVOTest.j +++ b/Tests/Foundation/CPKVOTest.j @@ -585,6 +585,7 @@ [self assertTrue: type == CPKeyValueChangeInsertion message: "Should have been an insertion, was: "+type]; var values = [changes objectForKey:CPKeyValueChangeNewKey]; + [self assertTrue: [values isEqual:[5]] message: "array should have contained 5, was: "+values+" type: "+[values.isa description]+" length: "+values.length]; [self assert:aKeyPath equals:"tester.subviews"];