#iphone #objective-c #ios #ios4
#iPhone #objective-c #iOS #ios4
Вопрос:
Я хочу сделать следующее на кнопке clck :
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
if (QuestionMutableArray==nil) {
[self testIterator];
}
else
{
[myMutableArray release];
[myDictionary release];
[self dismissModalViewControllerAnimated:YES];
//[self release];
}
}
}
После возврата к контроллеру parentView с этим кодом…когда я снова перейду к этому TableView, я хочу перезагрузить свой TableView с новым NSMutableArray.Как я могу очистить свою коллекцию (NSMutableArray или dictionary) с помощью dismissModalViewController?
Ответ №1:
Используйте removeAllObjects
метод.
Ответ №2:
Ошибка EXC_BAD_ACCESS возникает при попытке доступа к освобожденной памяти. Возможно, вы пытаетесь получить доступ к массиву или словарю после их освобождения. Вместо этого удалите объекты из массива или словаря.
Комментарии:
1. — (void)AlertView: (UIAlertView *)AlertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { [self dismissModalViewControllerAnimated: YES]; [QuestionMutableArray removeAllObjects]; XmlManipulatorObject=[[инициализация выделения xmlManipulator]; QuestionMutableArray=[[XmlManipulatorObject ReadXml] сохранить]; [self.TableView release]; }} я попытался, как вы сказали, удалить все объекты из массива. Но я не получаю новые данные в свой список. Он загружается только оттуда, откуда я вернулся. Каким может быть решение?
Ответ №3:
Не выпускайте его, чтобы создать объект nil
.
Ответ №4:
EXC_BAD_ACCESS обычно возникает по двум причинам:
- Строки, не начинающиеся со знака «@» и
- Плохое управление памятью.
Я предполагаю, что в вашем состоянии вы освобождаете массив и словарь, но вы неправильно инициализируете. Убедитесь, что они правильно инициализированы перед каждым использованием, и сохраняйте их, пока не закончите с ними. Это также может быть вызвано игрой в Interface Builder: я помню, как несколько раз подключал IBOutlet и решил, что имя не имеет никакого смысла, и переименовал свойство. После каждого подключения xcode автоматически помещает инструкцию release в метод dealloc, вы также можете захотеть проверить там, использовали ли вы IB в этом контроллере просмотра, на случай, если свойство было выпущено дважды.