Я использую большое количество очень маленьких веб-сервисов в своем приложении, и я преодолел пару дорог, которые не масштабируются или работают не так, как хотелось бы.
Подход к дизайну Я думаю о:
Задача для viewController состоит в том, чтобы запросить набор данных из общего webServicesClass, эта задача запускается в новом NSThread -> это создаст экземпляр объекта, который только извлекает xml и возвращает его в webServicesClass -> webServicesClass теперь создает экземпляры объект, который может только анализировать некоторые XML, поступающие от этого конкретного веб-сервиса. Затем Parser возвращает хороший объект Entity в webServiceClass. Теперь WebserviceClass должен сообщить viewController об этих данных.
viewController реализует webServiceClassDelegate и некоторые методы делегата, чтобы увидеть, прошел ли запрос веб-службы, как планировалось. например - (void) aWebserviceFailed и - (void) aWebserviceSuccess.
0.5 Поскольку WebserviceClass - это другой NSThread, возникнет ли проблема при вызове методов делегата для основного NSThread в родительском объекте?
1.0 Я думаю, что этот дизайн является надежным, поскольку он полностью инкапсулирует поиск, анализ и возврат сущности в разных классах. Но мне придется писать методы делегирования и реализовывать протоколы делегирования на каждом этапе пути для каждого отдельного веб-сервиса. то есть начиная с самого низа, WebserviceClass должен реализовывать методы делегирования как для объекта, который извлекает XML (начало, сбой, успех), так и для объекта, который анализирует XML (начало, сбой, успех), и WebserviceClass должен иметь возможность делегируйте каждый из этих ответов в viewController, который снова должен реализовать методы делегирования из WebserviceClass (запуск, сбой, успех).
Есть ли гораздо более простой способ сделать это?
У меня есть некоторый опыт проектирования шаблонов, но не от языков, которые используют делегирование столь же последовательно, как Objective C. В AS3 или Java у меня были бы события, которые могли всплывать сквозь объекты и информировать любого, кто слушал об изменениях. Во всем коде примера Objective, который я прочитал, я видел только NSNotifications (который был бы эквивалентен «событию» AS3 или Java), используемому в 0,1% случаев.
Описанный мною дизайн даст мне что-то, что отлично масштабируется для многих веб-сервисов и даст мне полный контроль над тем, где происходит потенциальная ошибка / исключение, но, похоже, много кода для получения этой слабой связи.
1.1 Или я должен полностью принять подход делегирования и приступить к работе:)
Спасибо за любые указатели или помощь, оказанную. Я не спрашиваю об исходном коде или подобных вещах, более того «это считается наилучшей практикой в Цели C в повседневной ситуации, которую вы только что описали»