関数の平均経過時間を記録するタイマークラスを作成します。だから私は関数が実行された回数を保存したい。しかし辞書の項目は変更されません。NSMutableDictionaryのsetValue:forKeyが機能しない理由
は、ここに私のコードです:
@implementation Timer {
NSDate *startTime;
// NSString *item;
NSMutableDictionary *itemCounts;
NSMutableDictionary *itemTimes;
}
- (void)tic {
startTime = [NSDate date];
}
- (void)tocWithMessage:(NSString*)message {
if (itemCounts[message] == nil) {
// itemCounts[message] = @1;
[itemCounts setValue:@1 forKey:message];
NSLog(@"%d", [itemCounts[message] integerValue]);
} else {
itemCounts[message] = @([itemCounts[message] integerValue] + 1);
}
double totalTime = [itemTimes[message] doubleValue];
double thisTime = -[startTime timeIntervalSinceNow] * 1000;
totalTime += thisTime;
itemTimes[message] = @(totalTime);
int count = [itemCounts[message] integerValue];
double averageTime = totalTime/count;
NSLog(@"%@: No.%d, average time: %lfms", message, count, averageTime);
// std::cout << message << ": " << 1. * (clock() - timerTimestamp)/CLOCKS_PER_SEC * 1000 << "ms" << std::endl;
}
@end
しかしitemCounts [メッセージ]は常にnilです。助けてください:)
ありがとうございます!
辞書が非オプションの;-)と宣言されている場合、Swiftではコンパイラエラーが発生します。 – vadian