Forum Command-N: intrebare deep copy - Forum Command-N

Sari la conținut

Pagina 1 din 1
  • Nu poți începe o discuție nouă
  • Nu poți răspunde la această discuție

intrebare deep copy

#1 Utilizatorul este offline   boboc 

  • Veteran
  • PipPipPip
  • Grup: Membri
  • Mesaje: 317
  • Înscris la: 26 feb 10
  • Locationvalcea

Trimis: 20 iulie 2010 - 22:28

Am si eu o intrebare despre deep copy,am urmatoarea categorie ce adauga o metoda clasei NSDictionary,este un exemplu dintr-o carte.
Este un dictionar ce contine mai multe array-uri care contin la randul lor NSString-uri.
Din cate stiu eu copiile NSDictionary NSArray si NSSet sunt shallow by default.

@implementation NSDictionary (MutableDeepCopy)

- (NSMutableDictionary *) mutableDeepCopy
{
	NSMutableDictionary *ret = [[NSMutableDictionary alloc] initWithCapacity:[self count]];
	
	NSArray *keys = [self allKeys]; 
	
	for (id key in keys)
	{
		id oneValue = [self valueForKey:key];
		id oneCopy = nil;

		if ([oneValue respondsToSelector:@selector(mutableDeepCopy)]) 
			oneCopy = [oneValue mutableDeepCopy];
		else if ([oneValue respondsToSelector:@selector(mutableCopy)]) 
			oneCopy = [oneValue mutableCopy];
		if (oneCopy == nil) 
			oneCopy = [oneValue copy];

		[ret setValue:oneCopy forKey:key]; return ret;
	}
	return ret;
}
@end


Nu inteleg cum se realizeaza deep copy in codul de mai sus.
O metoda pentru deep copy care o stiu ar fi prin NSKeyedArchiver/NSKeyedUnarchiver:

 array2 = [NSKeyedUnarchiver unarchiveObjectWithData: [NSKeyedArchiver archiveDataWithRootObject: array1];

0

#2 Utilizatorul este offline   raducul 

  • Membru nou
  • Pip
  • Grup: Membri
  • Mesaje: 2
  • Înscris la: 22 apr 10

Trimis: 26 iulie 2010 - 12:45

Daca exista categoria asta (mutableDeepCopy) si pt. NSArray si NSSet, atunci merge... imho.
0

Pagina 1 din 1
  • Nu poți începe o discuție nouă
  • Nu poți răspunde la această discuție

1 utilizatori citesc această discuție
0 membri, 1 vizitatori, 0 utilizatori anonimi