Несколько асинхронных HTTP-запросов в фоновом режиме iPhone - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть приложение, которое имеет много просмотров (с помощью контроллера панели вкладок).Я хочу сделать одновременные асинхронные запросы HTTP, независимо от текущего представления, которое просматривает пользователь.Когда http-запрос получен, я хочу обновить пользовательский интерфейс, а затем запросить снова.Если я пишу код внутри подкласса UIViewController, все работает нормально.Где я могу написать свой код, чтобы он работал, не зная, какую вкладку просматривает пользователь?Я хотел бы избежать использования потоков.Это возможно?

Я сделал веб-сервис, который принимает http-запросы и отвечает, когда у него появляется что-то новое.Итак, я запрашиваю новую информацию, а затем снова открываю окно для веб-службы, чтобы поговорить со мной.Таким образом я создаю «постоянную» связь.

Наконец, я хотел бы знать, каков наилучший способ информировать мою модель об изменениях, которые будут внесены в нее.NSNotification?Делегация?

ОБНОВЛЕНИЕ

Код ниже НЕ ПОЛУЧАЕТ никакого ответа.Он получает BAD_ACCESS и вылетает.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    // Request Data
    ConnectionHandler *connectionHandler = [[ConnectionHandler alloc] init];
    [connectionHandler requestSO];
    [connectionHandler requestSopen];
    // Make Root View Controller
    MainViewController *mainViewcontroller = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    [self.window setRootViewController:mainViewcontroller];
    //
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

NSURLConnection по умолчанию является асинхронным, если только вы вручную не вызываете sendSynchronousRequest: returningResponse: error:, создаете класс NSURLConnectionDelegate, устанавливаете этот класс в качестве делегата вашей модели и используете его для обновления вашего пользовательского интерфейса.

0 голосов
/ 29 февраля 2012

Нельзя избегать потоков, но если вы хотите запускать все процессы из центрального места, возможно, appDelegate - это то место, из которого вы могли бы это сделать.Лично я буду выполнять все сетевые запросы внутри модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...