Я работаю над приложением для iPhone, которое во время выполнения создаст NSMutableDictionary, для которого значения (из пар ключ-значение) будут NSMutableArrays. Будучи новичком в Objective-C, я обеспокоен тем, что следующее может вызвать утечку памяти:
- (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 * для помещения в структуру, я сначала проверяю, является ли объект в паре ключ-значение, соответствующий второму аргументу (supplierID), нулем. Если это ноль, я выделяю новый NSMutableArray и устанавливаю его в качестве объекта для этого ключа, а затем освобождаю его. Предполагая, что я освобождаю NSMutableDictionary в dealloc класса, содержащего этот метод, ссылки будут освобождены? Прежде чем освободить NSMutableDictionary, нужно ли пройти через него и освободить отдельные NSMutableArrays, содержащиеся в?
Спасибо
Бен Б.