– : сообщение, отправленное на освобожденный экземпляр

Я передал значение NSArray обратно в родительское представление с помощью делегата.

он получен в родительском представлении таким образом

- (void) setManufactureSearchFields:(NSArray *)arrayValues withIndexPath:(NSIndexPath *)myIndexPath { manufactureSearchObjectString = [arrayValues valueForKey:@"MANUFACTURER"]; NSLog(@"%@",[arrayValues valueForKey:@"MANUFACTURER"]); manufactureResultIndexPath = myIndexPath; [self.tableView reloadData]; //reloads the tabels so you can see the value in the tableViewCell. } 

Если бы я должен был выполнить этот код и выбрать столбец childview, он, очевидно, выполняет делегат, но затем зависает и запускает эту ошибку в журнал

 2011-10-31 14:06:16.670 code[12610:207] ( "Alfa Romeo" ) 2011-10-31 14:06:16.673 code[12610:207] *** -[__NSArrayI isEqualToString:]: message sent to deallocated instance 0x6859280 

Однако, если я прокомментирую следующую строку в методе делегата

  - (void) setManufactureSearchFields:(NSArray *)arrayValues withIndexPath:(NSIndexPath *)myIndexPath { //manufactureSearchObjectString = [arrayValues valueForKey:@"MANUFACTURER"]; NSLog(@"%@",[arrayValues valueForKey:@"MANUFACTURER"]); manufactureResultIndexPath = myIndexPath; [self.tableView reloadData]; //reloads the tabels so you can see the value in the tableViewCell. } 

это доза не краха, и я в конечном итоге с NSLog с правильными данными в моем журнале, как это.

 2011-10-31 14:09:28.200 code[12737:207] ( Sony ) 

Я надеюсь, что кто-то раньше испытывал такую ​​проблему, это то, что выглядит мой объект массива, его словарь значений.

 ISELECT = F; ISALIVE = T; MANUFACTURER = Sony; MANUFACTURERID = 3; 

3 Solutions collect form web for “– : сообщение, отправленное на освобожденный экземпляр”

valueForKey: возвращает экземпляр с автореализацией. Если вы не сохраните его, вы можете ожидать, что он будет освобожден после того, как вы вернетесь из текущего метода. Похоже, вы назначаете его переменной экземпляра. Если вы это сделаете, вам нужно сохранить его.

 manufactureSearchObjectString = [arrayValues valueForKey:@"MANUFACTURER"]; [manufactureSearchObjectString retain]; 

Но похоже, что у вас есть еще одна проблема.

 [arrayValues valueForKey:@"MANUFACTURER"]; 

Это возвращает массив.

 manufactureSearchObjectString = [arrayValues valueForKey:@"MANUFACTURER"]; 

По имени вашей переменной выглядит так, как будто вы назначаете ее строковой переменной. Поэтому, если вы исправите проблему сохранения, у вас будет другая ошибка. При попытке вызвать isEqualToString на него вы получите нераспознанный селектор.

Вам нужно назначить строковое значение для изготовленияSearchObjectString. Вам нужно выяснить, какое строковое значение вы хотите. В этом случае у вас есть только одна строка в вашем массиве, поэтому, я думаю, вы этого хотите. В таком случае

 manufactureSearchObjectString = [[arrayValues valueForKey:@"MANUFACTURER"] objectAtIndex:0]; [manufactureSearchObjectString retain]; 

Но в целом вам нужно проверить, есть ли в массиве несколько значений, и решить, какой из них вы хотите, а также проверить, нет ли значений в массиве и что-то сделать правильно.

Попробуйте изменить код:

 - (void) setManufactureSearchFields:(NSDictionary *)arrayValues withIndexPath:(NSIndexPath *)myIndexPath { manufactureSearchObjectString = [[arrayValues valueForKey:@"MANUFACTURER"] copy]; NSLog(@"%@",[arrayValues valueForKey:@"MANUFACTURER"]); manufactureResultIndexPath = myIndexPath; [self.tableView reloadData]; //reloads the tabels so you can see the value in the tableViewCell. } 

Обратите внимание, что я также изменил тип переменной arrayValues на NSDictionary . Дайте мне знать, если это сработает для вас.

конвертируйте его в NSString.

  NSString *manufact=[NSString stringWithFormat:@"%@",[arrayValues valueForKey:@"MANUFACTURER"]; 

Он не потерпит краха.

  • UITableViewController с разделом и Parse как сервер BackEnd
  • Как настроить ячейки для определения размера iOS8
  • UITableView delete / add row вызывает CoreData: серьезная ошибка приложения, если в MasterView для SplitViewController был выбран другой объект
  • TableView Showing Behind Tab Bar
  • Слайд таблицы открывается под панелью навигации, когда пользователь кратковременно
  • Как отключить перезагрузку табличного представления при прокрутке в iOS
  • Программная активация UISearchBar блокирует взаимодействие с пользователем
  • Как работает cellForRowAtIndexPath?
  • Как мне создать асинхронный загрузчик изображений для моего UITableView, который приоритизирует загрузку в зависимости от местоположения в виде таблицы?
  • touchesEnded: withEvent: не вызывается из моего UIView, который находится поверх UITableView
  • Столбец последней строки отключен под управлением tabbarcontroller
  • Interesting Posts

    Как получить Youtube Thumbnails

    Получить количество изображений в Photos.app?

    Xcode и Cocoapods Ошибка «Нет такого модуля»

    Как узнать, будет ли контроллер вида представлением в виде popover или модального?

    iphone ipa-файл на устройстве с файлом инициализации разработчика – будет ли он развернут на устройстве в другой машине MAC

    Соответствие регулярных выражений iOS – NSString

    UINavigationItem titleView анимация

    Вращение UIImageView более чем на 180 градусов с использованием анимации на iOS

    Приложение Кордовы, зависающее во время запуска на iOS 10

    Как мне это сделать? вставить изображение в код?

    UIActionSheet в быстрых клавишах Отмена кнопки вверх в iOS 7

    Инструмент командной строки PhoneGap «git» не установлен

    Отправить тег для OneSignal после входа в систему

    Почему сигнал вызывается дважды в ReactiveCocoa?

    Xcode 5.0 Ошибка при установке инструментов командной строки

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.