В следующий раз, вставить код в ваш вопрос, без комментариев. Здесь красиво отформатирован:
NSMutableArray *currentIngsGroup = [[NSMutableArray alloc] init];
currentIngsGroup = (NSMutableArray *)[allIngredientGroups objectAtIndex:0];
NSLog(@"accesing array %d", [currentIngsGroup count]);
Обычно, я бы сказал, что этот симптом вы описали означает, что вы более-рилизинг-то. Код, однако, демонстрирует фундаментальное отсутствие понимания Objective-C. Я бы предложил прочитать документ Introduction to Objective-C.
В частности, вы выделяете экземпляр NSMutableArray в первой строке кода. Вторая строка, однако, немедленно перезаписывает ссылку на изменяемый массив ссылкой на любой объект, находящийся в индексе 0 массива allIngredientGroups
.
(NSMutableArray *)
совершенно не нужно. Он не будет заставлять какой-либо объект в массиве быть изменяемым массивом, и поскольку -objectAtIndex:
возвращает (id)
, приведение не требуется.
BTW: Массивы, выделенные на первой линии, просачиваются. Опять же, прочитайте введение в цель-c, чтобы понять, почему.
Звучит как проблема с распределением памяти. Вы должны показать код. Это невозможно для автоматического «преобразования» в какой-либо другой объект. Как выглядит ваш код для инициализации NSMutableArray? –
привет Мэтт! позвольте мне добавить вам код: NSMutableArray * currentIngsGroup = [[NSMutableArray alloc] init]; currentIngsGroup = (NSMutableArray *) [allIngredientGroups objectAtIndex: 0]; NSLog (@ "accesing array% d", [currentIngsGroup count]); // здесь он сбой, потому что обнаруживает currentIngsGroup как объект UICachedDeviceRGBColor :( –
Если вы разместите свой код в своем вопросе, вы можете воспользоваться автоформатированием и сделать его более читаемым. – willc2