NSURLConnection и connectionDidFinishЗагрузка совместного использования между несколькими функциями - PullRequest
0 голосов
/ 30 ноября 2011

Это упрощение, но у меня есть приложение, которое имеет следующие методы:

//This is a common function that is used by various functions in my app to send a HTTP Post via NSURLConnection
- (void)sendPostWithURL:(NSString*)url

//This is the NSURLConnection function that has the response data
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

//myFunction1: send a HTTP Post and receive response1.json
-(void)myFunction1{
 [self sendPostWithURL:@"http://www.somesite.com/response1.json"];
 }

//myFunction2: send a HTTP Post and receive response2.json
-(void)myFunction2{
 [self sendPostWithURL:@"http://www.somesite.com/response2.json"];
}

Итак, как вы можете видеть, у меня есть две функции (myFunction1 и myFunction2), которые имеют общий NSURLConnection для отправкии получение данных.

В функции connectionDidFinishLoading () как я могу узнать, является ли ответ для myFunction1 или myFunction2?

У меня есть одна возможность, например, запросить, что в данных ответа json есть одна пара ключ / значение, которая позволяет мне увидеть, какой это ответ.Однако у меня есть ощущение, что есть более элегантный способ сделать это в самом коде.

Любой совет был бы великолепен!Спасибо!

1 Ответ

2 голосов
/ 30 ноября 2011

Вы называете их «функциями». Если вы начнете думать о них как о «методах» в классе, многое из этого будет иметь больше смысла.

Вам необходимо инкапсулировать все элементы NSURLConnection в классе (например, Downloader.m). Downloader.m будет иметь методы: sendPostWithUrl и connectionDidFinishLoading.

Затем, когда вам нужно что-то скачать, создать новый экземпляр загрузчика и вызвать его метод sendPost. У вас будет отдельный экземпляр класса для каждой операции загрузки, и его будет достаточно легко отслеживать.

...