В книге «Начинающий iPhone 4» у автора есть этот код, чтобы создать категорию для создания глубокой копии NSDictionary, в котором есть NSArray имен для каждой буквы алфавита, чтобы показать пример индексированной таблицы с поискомbar.
#import "NSDictionary-MutableDeepCopy.h"
@implementation NSDictionary (MutableDeepCopy)
- (NSMutableDictionary *) mutableDeepCopy {
NSMutableDictionary *returnDict = [[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];
[returnDict setValue:oneCopy forKey:key];
[oneCopy release];
}
return returnDict;
}
@end
Может кто-нибудь объяснить логику цикла for?Я не уверен, что он пытается сделать, чтобы увидеть, какое значение отвечает на какой селектор и почему оно будет добавлено в словарь.Спасибо.