NSMutableDictionaryからオブジェクトを一度に取得して削除する方法はありますか?崩壊してしまう方法次一度にNSMutableDictionaryからオブジェクトを取得して削除する
id myObject = [myMutableDict objectForKey:@"myKey"]
if(myObject)
{
[myMutableDict removeObjectForKey:@"myKey"];
...my code...
}
にして:私は、任意のボトルネックか何かに実行していないと私は何かをプロファイリングしていないが、それは単にに理にかなって
id myObject = [myMutableDict retrieveAndRemoveObjectForKey:@"myKey"];
if (myObject)
{
...my code...
}
変更可能な辞書からオブジェクトを削除して一度に戻す方法があるので、辞書は「myObject」を2回見つけることはできません(NSMutableDictionaryが内部的にどのように動作するかについて何も仮定しないでください)。
「意味がありますか?いいえ、それはありません。他の言語ランタイムのコレクションクラスでこのようなメソッドを見たことはありません。しかし、自分で書きたい場合は、カテゴリを作成することをお勧めします。 – Droppy
"他の言語ランタイムのコレクションクラスでこのようなメソッドを見たことはありません。"それはそれが意味をなさないかどうかという議論ではありません。他の言語では、要素を見つけ出し、イテレータを取得してから、一定時間内にイテレータを使ってオブジェクトを削除することができます。ここでは、NSMutableDictionaryはおそらく "myObject"を内部的に2回、各メソッド呼び出しで1回見つけなければならないでしょう。そのため、両方を行うメソッドが完璧な意味を持ちます。とにかく、何も内蔵されていない場合、私は答えがノーだと思います。 – Rajveer
少なくともPythonでこのようなメソッドがあります:https://docs.python.org/3/library/stdtypes.html#dict.pop –