Рекурсивное делегирование в iOS - как реализовать? - PullRequest
1 голос
/ 27 мая 2011

У меня есть DataController для моего ViewController, который обрабатывает загрузку данных из Интернета.Я установил DataController в качестве источника данных для моего ViewController, и он работает нормально.Но теперь я хочу отображать индикатор выполнения при загрузке данных, поэтому я думал о том, чтобы ViewController был делегатом DataController и получать уведомления о начале, продолжении и завершении загрузки.Очевидно, что это рекурсивное делегирование приводит к плохому доступу, пока стек все еще показывает мне сборку.Как мне реализовать эту ситуацию?

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Я никогда не использовал этот точный шаблон dataController, о котором вы упомянули, но моя общая реализация для чего-то такого:

  1. Объявление NSArray или NSMutableArray в качестве члена вашего подкласса UIViewController
  2. Создайте класс, который использует ASIHTTP или NSURL для загрузки данных из Интернета, и установите этот класс в качестве делегата для ASIHTTP или NSURL
  3. Создайте протокол в этом классе доступа к данным, которого придерживается ваш UIViewController
  4. Создайте экземпляр этого класса в вашем UIViewController и запустите процесс выборки (асинхронность)
  5. Когда запросы завершатся (или вы получите уведомление о ходе выполнения) к вашему классу доступа к данным, отправьте эту информациючерез делегата на ваш UIViewController
  6. Когда запрос полностью завершится, верните список элементов в метод делегата и сохраните эти данные локально в массиве с шага 1.

Существуют различные способысделать это в зависимости от ваших обстоятельств, но я просто хотел датьвам идея.

0 голосов
/ 06 июня 2011

Неважно;Оказывается, проблема была из-за преждевременного выпуска.Я имею дело с объектами, которые никогда не должны быть освобождены (источник данных и контроллер корневого представления), и я устанавливаю делегирование после того, как оба созданы, таким образом, здесь действительно нет никакой проблемы

...