NSURLConnection и объект делегат - PullRequest
       32

NSURLConnection и объект делегат

1 голос
/ 25 августа 2011

Будучи новичком в Objective-C, я не совсем понимаю понятие делегата. Я оглянулся, но не мог понять, какие ответы дают, поэтому я спрашиваю это своими словами.

Я реализовал DownloadDelegate с этими четырьмя функциями:

  • (недействительное) соединение: (NSURLConnection *) соединение didReceiveResponse: (NSURLResponse *) ответ {
  • (недействительно) соединение: (NSURLConnection *) соединение didReceiveData: (NSData *) data {
  • (void) соединение: (NSURLConnection *) соединение didFailWithError: (NSError *) ошибка {
  • (void) connectionDidFinishLoading: (NSURLConnection *) соединение {

Проблема в том, что я хочу отправлять и получать данные после их загрузки. Я имел обыкновение делать это, когда эти методы были в моем appviewcontroller, но так как я хочу многократно вызывать процесс загрузки, я решил, что мне следует поместить его в делегат (это даже верно?)

Но я не знаю, как отправлять и получать данные делегату. Кстати, я использовал учебник Apple, чтобы установить NSURLConnection, и он работал просто отлично. Ссылка

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 25 августа 2011

Может быть, вы немного запутались в том, что такое делегат.В вашем случае NSURLConnection использует делегата (тот, которого вы собираетесь объявить) для отправки информации о важных событиях, подобных тем, которые вы упомянули выше.Фактический делегат может быть частью контроллера представления или другого класса модели или в своем собственном файле, это не имеет значения.Чтобы быть делегатом NSURLConnection и фактически получать обратные вызовы, вы должны объявить протокол в своем объявлении @implementation

@implementation DownloadDelegate : NSObject <NSURLConnectionDelegate>

Затем, где бы вы ни начали свое соединение, вам нужно установить self в качестве делегата вэто объявление

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:string]];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];//here is where you are declaring yourself as the delegate
[connection start];

Надеюсь, это поможет.

...