Как управлять несколькими асинхронными делегатами NSURLConnection? - PullRequest
0 голосов
/ 12 мая 2010

У меня есть класс, который делает несколько асинхронных соединений, где каждое соединение выполняет свою собственную логику в методах делегата.

Поскольку делегатом является сам класс, как я могу реализовать это разделение в логике в методах делегата NSURLConnection?

Ответы [ 4 ]

6 голосов
/ 12 мая 2010

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

Март 2014 г. edit - не используйте методы делегата, используйте блоки.

2 голосов
/ 12 мая 2010

Звучит так, будто вам нужно лучше представить свои объекты с точки зрения ориентации объекта.

У вас должен быть один класс, который управляет несколькими классами, каждый из которых управляет собственным URL-соединением.

1 голос
/ 12 мая 2010

Либо проверьте переданное в NSURLConnection против сохраненного значения, чтобы увидеть, какое соединение отвечает; или сделать делегат различными объектами; или сделать обратный вызов вести себя в общем виде.

0 голосов
/ 16 августа 2010

Я столкнулся с этой проблемой, как это. У меня есть класс, который делает то же самое. Я обошел его, сохранив каждый объект NSURLConnection в непостоянном экземпляре словаря var с ключом hash. Затем я добавил метод cancelAllConnections в класс и вызываю его в методе viewDidUnload каждого контроллера представления. Метод удаляет все объекты подключения в изменяемом словаре. Затем я добавил проверку в connectionDidFinishLoading NSURLConnection, чтобы проверить ключ хеша в изменяемом словаре. Если значение хеша не существует, это означает, что соединение было отменено, и селектор обратного вызова не будет выполняться для объекта мусора.

...