Я работаю над приложением iPhone, которое будет на этапе выполнения построить NSMutableDictionary, для которого значениями (пары ключ-значение) будут NSMutableArrays. Будучи несколько новым для Objective-C, я обеспокоен тем, что следующий будет вызывать утечку памяти:Когда выпустить объект, добавленный в NSMutableDictionary
- (void) addNewSupplierPhoto:(UIImage*)image toSupplierID:(NSInteger*) supplierID{
NSMutableArray* supplierPhotoArray = [supplierPhotos objectForKey:supplierID];
if(supplierPhotoArray == nil)
{
supplierPhotoArray = [[NSMutableArray alloc] init];
[supplierPhotos setObject:supplierPhotoArray forKey:supplierID];
[supplierPhotoArray release];
}
}
supplierPhotos является NSMutableDictionary, которая является переменным членом содержащего класса.
Как вы можете видеть, когда я принимаю новый элемент UIImage * для ввода в структуру, я сначала проверяю, является ли объект в паре ключа-значения, соответствующий второму аргументу (vendIDID) равным нулю. Если он равен нулю, я выделяю новый NSMutableArray и устанавливаю его как объект для этого ключа, а затем отпускаю его. Предполагая, что я освобожу NSMutableDictionary в dealloc класса, содержащего этот метод, будут ли ссылки выпущены? Прежде чем освобождать NSMutableDictionary, мне нужно выполнить его и удалить все содержащиеся в нем NSMutableArrays?
Спасибо,
Бен Б.
Я должен добавить, для полноты, что метод не является полным; Я просто демонстрирую свой метод создания NSMutableArrays. –