Beginning iPhone 4の本では、作成者はこのコードを使用して、アルファベットの各文字の名前のNSArrayを持つNSDictionaryのディープコピーを作成するためのカテゴリを作成し、検索バー付きのインデックス付きテーブルの例を示しています。
#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ループロジックを説明できますか?どの値がどのセレクターに応答するか、そしてなぜそれが辞書に追加されるのかを確認するために彼が何をしようとしているのかわかりません。ありがとう。