Поскольку C-время-выполнения переходит к настройкам проекта, выбирает C/C ++ тогда 'Генерация кода'. Измените настройки 'библиотеки времени выполнения' на 'многопоточный' вместо 'многопоточного dll'.
, Если Вы пользуетесь какими-либо другими библиотеками, Вы, возможно, должны сказать компоновщику игнорировать динамично связанный CRT явно.
Сохраните оба объекта NSURLConnection как переменные-члены любого объекта делегата, который вы передали в connectionWithRequest: delegate :. Затем вы можете просто сравнить каждый из них с NSURLConnection, переданным в connectionDidFinishLoading :, и ответить соответствующим образом:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if (connection == firstConnection) {
// do something
}
else if (connection == secondConnection) {
// do something else
}
}
Другой немного более объектно-ориентированный вариант - создать два разных объекта-делегата, каждый из которых знает, как работать с каждым типом связи. Затем просто передайте соответствующий делегат при создании каждого соединения. Таким образом, вам не нужно проверять, какое у вас соединение, потому что каждый делегат будет получать connectionDidFinishLoading: только для своего собственного соединения.
Я тоже предпочитаю разных делегатов для каждого соединения. Хотя это немного накладные расходы. К счастью, вы можете упростить задачу, используя блоки. Это новая функция, которой пока нет в стандартном SDK, но есть сторонний фреймворк под названием PLBlocks , который вы уже можете использовать. Вот статья о том, как их использовать, она также содержит пример для NSURLConnection.
Это клиентский код, выполняющий HTTP-запрос с обратным вызовом блока:
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
[NSURLConnection sendAsynchronousRequest:req onCompletionDo: ^(NSData *data, NSURLResponse *res, NSError *err) {
NSLog(@"data: %ld bytes. res: %@, error: %@", (long)[data length], res, err);
[cell.activity stopAnimating];
}];
Я также использовал для создания пользовательской оболочки вокруг NSURLConnection
, но теперь я переключился на ASIHTTPRequest . Это фантастическая библиотека, обеспечивающая гораздо большую гибкость и возможности, чем NSURLConnection
. Посмотрите и попробуйте, оно того стоит.
В своих проектах я создаю класс-оболочку для соединения. Таким образом, вы можете сохранить новый экземпляр для каждого нужного вам соединения и поддерживать эти классы в другом классе менеджера.
Что-то вроде [AsynchronousConnection initWithURL: delegate: selector: