aboutsummaryrefslogtreecommitdiffstats
path: root/Source/NSArray_DeepMutableCopy.m
diff options
context:
space:
mode:
Diffstat (limited to 'Source/NSArray_DeepMutableCopy.m')
-rw-r--r--Source/NSArray_DeepMutableCopy.m42
1 files changed, 42 insertions, 0 deletions
diff --git a/Source/NSArray_DeepMutableCopy.m b/Source/NSArray_DeepMutableCopy.m
new file mode 100644
index 00000000..72f64c06
--- /dev/null
+++ b/Source/NSArray_DeepMutableCopy.m
@@ -0,0 +1,42 @@
+//
+// NSArray_DeepMutableCopy.m
+//
+// Created by Matt Gemmell on 02/05/2008.
+// Copyright 2008 Instinctive Code. All rights reserved.
+//
+
+#import "NSArray_DeepMutableCopy.h"
+
+
+@implementation NSArray (DeepMutableCopy)
+
+
+- (NSMutableArray *)deepMutableCopy;
+{
+ NSMutableArray *newArray;
+ unsigned int index, count;
+
+ count = [self count];
+ newArray = [[NSMutableArray allocWithZone:[self zone]] initWithCapacity:count];
+ for (index = 0; index < count; index++) {
+ id anObject;
+
+ anObject = [self objectAtIndex:index];
+ if ([anObject respondsToSelector:@selector(deepMutableCopy)]) {
+ anObject = [anObject deepMutableCopy];
+ [newArray addObject:anObject];
+ [anObject release];
+ } else if ([anObject respondsToSelector:@selector(mutableCopyWithZone:)]) {
+ anObject = [anObject mutableCopyWithZone:nil];
+ [newArray addObject:anObject];
+ [anObject release];
+ } else {
+ [newArray addObject:anObject];
+ }
+ }
+
+ return newArray;
+}
+
+
+@end