Я в настоящее время делаю следующее для убирания NSMutableDictionary
[myDictionary release];
myDictionary = [[NSMutableDictionary alloc] init];
Строка выпуска на самом деле не выпускает объектов в словаре. Я могу все еще видеть всех их на следующей строке. Только когда строка выделения выполняется, словарь обнуляется. Существует ли лучший способ сделать это?
Я не могу его сейчас проверить, но пробовали ли вы метод removeAllObjects
из NSMutableDictionary
?
-removeAllObjects сработает, как упоминал Энди. Однако, если какой-нибудь из объектов вашего словаря будет автоматически освобожден, или если сам словарь был автоматически освобожден где-то вдоль линии, то они не будут освобождены до следующего завершения runloop (когда пул авторелиза будет слит).
Вы Скажем:
линия выпуска на самом деле Отпустите любые объекты в словаре. Я все еще могу видеть все их на Следующая строка. Это не до alloc линия выполнена, что словарь оборудован. Есть ли способ лучше Чтобы это сделать?
Если -Release
-реализация
из музейного словаря приводит к тому, что словарь будет отделен - падает удерживаемое количество до нуля - тогда вомируемый словарь выпустит все содержащиеся объекты. Всегда.
Таким образом, если объекты не освобождаются, то это предложило «исправить» ...
[myDictionary removeAllObjects];
[myDictionary release];
myDictionary = [[NSMutableDictionary alloc] init];
... это утечка памяти в том, что исходный экземпляр NSMutballySysAry будет протекать.
В результате вызов -ReMovealLObjects
будет пустое словарь и освободить все содержащиеся объекты, , но у вас все еще есть утечка памяти, которую вы должны выяснить и исправить.
Быть тупым:
Если объекты в вашем словаре не оформлены, когда словарь получает вышеупомянутую -Release
(без вызова -ReMovealLObjects
), то есть утечка памяти. Это либо:
Объекты в словаре имеют был сохранен дополнительное время.
Есть еще выдающийся
-RETAIN
в словаре.
Поскольку вы говорите, что объекты правильно (как в, как и ожидалось), освобождены при вызове -ReMovealLObjects
, то он должен быть (2). Просмотрите свой код и выясните, где есть дополнительный -RETAIN
словаря. Вы можете использовать Alloc Alloc , чтобы выяснить, где происходит все сохранности.