Мое приложение вылетает, если я неоднократно меняю вид управления - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть приложение, которое считывает из базы данных некоторые данные (ASIFormDataRequest) и некоторые изображения из файлов сервера (setImageWithURL). Мое приложение делает это каждый раз, когда изменяется viewController (чтобы все обновлялось). Таким образом, я предполагаю, что есть проблема с кэшированными изображениями. Если я нажимаю на приложение до предела, переключая viewControllers, мое приложение вылетает. Почему это?

Все это появилось после добавления функций setImageWithURL. Кто-нибудь сталкивался с чем-то подобным?

Возможно, мне придется изменить способ работы моего приложения. Как вы, ребята, делаете эти вызовы на сервер / SQL? Как часто?

РЕДАКТИРОВАНИЕ: (NON_ANSWERED YET):

XCODE ничего не говорит об этом, при сбое моего устройства отображается только:

2011-12-29 20: 14: 56.479 CaeDeCajon [4969: 6e4f] arrayProductos.id: 13 id_producto: 31 2011-12-29 20: 14: 56.481 CaeDeCajon [4969: 7b5f] arrayProductos.id: 25 id_producto: 15 2011-12-29 20: 14: 56.490 CaeDeCajon [4969: 7b5f] arrayProductos.id: 31 id_producto: 15 2011-12-29 20: 14: 56.491 CaeDeCajon [4969: 7b5f] arrayProductos.id: 32 id_producto: 15 2011-12-29 20: 14: 56.395 CaeDeCajon [4969: 955f] arrayProductos.id: 22 id_producto: 35 (gdb) // ЗДЕСЬ ОСТАНАВЛИВАЕТСЯ RUNNING.

Для лучшего понимания вопроса мое приложение разработано следующим образом:

  • На основе 5-значного TabBar.

  • Во втором значке у меня есть табличное представление с категориями товаров (столы, стулья ...), и если вы нажмете на один из них, появится другой viewController (обычный подробный вид), показывающий несколько товаров подряд ( благодаря scrollView), здесь есть навигационный контроллер с кнопкой на нем, при нажатии он переводит вас в режим галереи: показывая те же товары, которые были показаны в scrollView, но в режиме галереи, если вы нажимаете один из продуктов он вернет вас в scrollView и переместит ваш экран к выбранному продукту. Довольно нормальные вещи.

  • На третьем значке у меня есть корзина оформления заказа, в которой нажимается каждый продукт, выбранный в scrollView (там, где есть кнопка покупки).

Дело в том, что я "считываю" Asycn из базы данных всю информацию (без картинок) при запуске с помощью каждого изменения и каждый раз, когда изменяется viewController, чтобы убедиться, что пользователь не забирает проданный продукт. Я имплантировал его сам по себе, и он, казалось, работал нормально и не разрушал мое приложение (информация: name, stock, ... только строки). световые данные.

Вот где я думаю, что проблема заключается в следующем: я «читаю» все изображения, отображаемые из файловой системы в 1 и 1 (хостинг компонентов), и, кажется, работает нормально и быстро. Проблема в том, что когда я меняю и быстро меняю / изменяю viewController между tableView-ScrollView-galleryMode, по той же причине он вылетал 4 раза подряд. Я должен сказать, что я получаю изображения для каждого viewController, например, изображения в scrollView, galleryMode и checkoutView одинаковы. Могу ли я использовать их повторно? потому что у меня есть вызовы URL-адреса everyViewController, и я думаю, что это не в порядке.

Код для скачивания картинок:

NSString *URLphotos =[[NSString alloc]initWithFormat:@"http://www.myurl.com/imagenes/%@",picture1.jpg]; // this is not always picture1.jpg but I changed it for making it plainer.

[cell.photo setImageWithURL: [NSURL URLWithString: URLphotos] placeholderImage: [UIImage imageNamed: @ "placeHolder.png"]];

Этого достаточно? Я больше не получил.

нужны советы:

  • Как / где вы, ребята, "читаете" изображения с URL-адреса, чтобы не вызывать сбой приложения, а постоянно обновлять приложение?
  • Что-то происходит с моим кешем, что сводит меня с ума? это исправить?

Заранее спасибо за интерес

1 Ответ

0 голосов
/ 20 февраля 2016

Не ясно, используете ли вы Coredata, но у меня был похожий опыт работы с приложением.У этого также была панель вкладок, и быстрое нажатие между пунктами вызвало бы случайные сбои.Проблема была в том, что coredata считывался / обновлялся / удалялся одновременно.

Я решил проблему, переместив все свои чтения coredata, записи и обновления в основной поток.(пример на Swift):

dispatch_async(dispatch_get_main_queue(), {
            myDatabase("NameHere", theCommand: "TRUNCATE", theQuery: "dummy")
})

Я сделал ряд функций для общих команд coredata, которые мне были нужны, поэтому ваш код, конечно, будет другим.Но попробуйте запустить coredata в главном потоке и посмотрите, решена ли ваша проблема.

Если у вас есть задача coredata с интенсивным использованием ЦП, вам не следует запускать основной поток, но сложность решения возрастает (яЯ использую XCode только в течение 3 месяцев), и кто-то еще может помочь.

Но если вы используете coredata, попробуйте сначала, чтобы посмотреть, решит ли она вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...