1

NSNumbers を持つ NSMutableDictionary があります。セットの構築が終了したら、現在保存されている値自体を使用してすべての値を再計算する必要があります。現在、高速な列挙と新しい NSMutableSet への格納を使用していますが、Objective C の経験がなく、これを行うためのより効率的な方法が必要です。

for (id key in temp_target_results) 
{
        formula_score = MyFormula([[temp_target_results objectForKey:key] doubleValue]);

        [target_results setObject:[NSNumber numberWithDouble:formula_score] forKey:key];
}

最後に、値で並べ替えています (そのため、NSMutableSet を使用しています)。

4

1 に答える 1

0

舞台裏で何が起こっているのかわからないため(上に貼り付けたコードのスニペットのコンテキストの外、または実際に何が起こっているのかわかりません)MyFormula関数)。

私が持っている最適化の質問の1つは、なぜとにかくすべてをNSNumberオブジェクトとして保存し、の配列ではなく保存するのdoublesですか? これを行うことの唯一の利点 (私が現在確認できる) は、オブジェクトを で渡す場合、またはNSNumberオブジェクトをディスクに書き出すか、 or で渡す場合です。NSArrayNSSetNSDictionaryNSNotification

しかし、私が行うことのいくつかには、その余分で不要な呼び出しを取り除くことが含まれますobjectForKey:

for (NSNumber * myNumber in temp_target_results) 
{
   formula_score = MyFormula([myNumber doubleValue]);

   [target_results setObject:[NSNumber numberWithDouble:formula_score] forKey:[myNumber stringValue]];
}

ここでの別の考慮事項:

のメソッドを実行しているため、あなたは ではないtarget_resultsようです。本当に だった場合は、次のように呼び出すだけです。NSMutableSetNSMutableDictionarysetObject:forKey:target_resultsNSMutableSet

[target_results addObject: [NSNumber numberWithDouble: formula_score]];
于 2012-01-07T14:33:49.147 に答える