Есть ли способ получить и удалить объект из NSMutableDictionary за один раз? Метод, который будет разрушаться следующее:Извлечение и удаление объекта из NSMutableDictionary за один раз
id myObject = [myMutableDict objectForKey:@"myKey"]
if(myObject)
{
[myMutableDict removeObjectForKey:@"myKey"];
...my code...
}
, чтобы:
id myObject = [myMutableDict retrieveAndRemoveObjectForKey:@"myKey"];
if (myObject)
{
...my code...
}
Я не работаю в какие-либо узкие места или что-нибудь, и я не профилированное ничего, но это только имеет смысл есть способ для удаления объекта из изменяемого словаря и возврата его за один проход, так что словарь не заканчивает поиск «myObject» дважды (я знаю, что не должен делать никаких предположений о том, как NSMutableDictionary работает внутри).
«имеет смысл»? Нет, нет. Я не видел таких методов в каких-либо классах сбора в любых других языковых версиях. Однако, если вы хотите написать их самостоятельно, то создание категории - это способ продолжения. – Droppy
«Я не видел таких методов в каких-либо классах сбора в любом другом времени исполнения». это вряд ли аргумент в пользу того, что это имеет смысл или нет. На других языках вы можете найти элемент, получить итератор, а затем удалить объект с помощью итератора в постоянное время. Здесь NSMutableDictionary, вероятно, придется дважды обнаруживать «myObject» дважды, один раз в каждом вызове метода, поэтому метод, который делает оба, имеет смысл. В любом случае, если нет ничего встроенного, я думаю, что ответ отрицательный. – Rajveer
По крайней мере, есть такой метод в Python: https://docs.python.org/3/library/stdtypes.html#dict.pop –