【发布时间】:2011-05-29 18:21:14
【问题描述】:
在《iPhone 4 入门》一书中,作者有此代码来创建一个类别,用于创建一个 NSDictionary 的深层副本,其中包含字母表中每个字母的名称的 NSArray,以显示带有搜索的索引表的示例吧。
#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 循环的逻辑吗?我不确定他在查看哪个值响应哪个选择器以及为什么将其添加到字典中要做什么。谢谢。
【问题讨论】:
标签: iphone objective-c categories nscoding