From b0feeb3d3118f462a7ccdc914a0832e4be30a63e Mon Sep 17 00:00:00 2001 From: Daniel Stolzenberg Date: Tue, 26 Oct 2010 12:53:21 +0200 Subject: [PATCH] improved cocoa compatibility by _CPKVCArray-proxy inheriting from CPMutableArray, fixed wrong mutable accessors patterns in "CPArray+KVO.j" --- Foundation/CPArray+KVO.j | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Foundation/CPArray+KVO.j b/Foundation/CPArray+KVO.j index 0c7db5e3d..39ae6291d 100644 --- a/Foundation/CPArray+KVO.j +++ b/Foundation/CPArray+KVO.j @@ -46,7 +46,7 @@ @end -@implementation _CPKVCArray : CPArray +@implementation _CPKVCArray : CPMutableArray { id _proxyObject; id _key; @@ -72,6 +72,9 @@ SEL _objectAtIndexSEL; Function _objectAtIndex; + SEL _objectsAtIndexesSEL; + Function _objectsAtIndexes; + SEL _countSEL; Function _count; @@ -114,19 +117,19 @@ if ([_proxyObject respondsToSelector:_removeSEL]) _remove = [_proxyObject methodForSelector:_removeSEL]; - _replaceSEL = sel_getName(@"replaceObjectFrom"+capitalizedKey+"AtIndex:withObject:"); + _replaceSEL = sel_getName(@"replaceObjectIn"+capitalizedKey+"AtIndex:withObject:"); if ([_proxyObject respondsToSelector:_replaceSEL]) _replace = [_proxyObject methodForSelector:_replaceSEL]; - _insertManySEL = sel_getName(@"insertObjects:in"+capitalizedKey+"AtIndexes:"); + _insertManySEL = sel_getName(@"insert"+capitalizedKey+":atIndexes:"); if ([_proxyObject respondsToSelector:_insertManySEL]) _insertMany = [_proxyObject methodForSelector:_insertManySEL]; - _removeManySEL = sel_getName(@"removeObjectsFrom"+capitalizedKey+"AtIndexes:"); + _removeManySEL = sel_getName(@"remove"+capitalizedKey+"AtIndexes:"); if ([_proxyObject respondsToSelector:_removeManySEL]) _remove = [_proxyObject methodForSelector:_removeManySEL]; - _replaceManySEL = sel_getName(@"replaceObjectsFrom"+capitalizedKey+"AtIndexes:withObjects:"); + _replaceManySEL = sel_getName(@"replace"+capitalizedKey+"AtIndexes:with"+capitalizedKey+":"); if ([_proxyObject respondsToSelector:_replaceManySEL]) _replace = [_proxyObject methodForSelector:_replaceManySEL]; @@ -134,6 +137,10 @@ if ([_proxyObject respondsToSelector:_objectAtIndexSEL]) _objectAtIndex = [_proxyObject methodForSelector:_objectAtIndexSEL]; + _objectsAtIndexesSEL = sel_getName(_key+"AtIndexes:"); + if ([_proxyObject respondsToSelector:_objectsAtIndexesSEL]) + _objectsAtIndexes = [_proxyObject methodForSelector:_objectsAtIndexesSEL]; + _countSEL = sel_getName(@"countOf"+capitalizedKey); if ([_proxyObject respondsToSelector:_countSEL]) _count = [_proxyObject methodForSelector:_countSEL];