Код этого вопроса слишком длинный, чтобы его можно было использовать. Но я почти уверен, что моя проблема связана с выпуском класса.
У меня есть вспомогательный класс ConnectionHelper.h / .m, который обрабатывает NSURLConnection для меня. По сути, я даю ему URL-адрес, который мне нужен, и он возвращает данные (он также выполняет быстрый анализ json). У него есть делегат, который я установил для вызывающего класса (в данном случае: DownloadViewController). Когда он заканчивает загрузку, он вызывает [delegate didFinishParseOf:objectName withDictionary:dictionary];
. Затем в DownloadViewController я выпускаю ConnectionHelper и выделяю новый для загрузки следующего объекта.
Моя проблема в том, что я делаю это один раз, а затем он создает соединение для второго, а затем моя программа просто падает. После этого звонка:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
Тогда я не думаю, что какой-либо из следующих методов вызывается:
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse *)cachedResponse
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Так я прав в том, что я что-то не выпускаю? Когда я выпускаю его в первый раз, функция dealloc не вызывается. Есть ли способ, которым я могу «заставить» его освободить? Нужно ли заставлять это? Я не думал, что это будет иметь значение, так как я выделил новый ConnectionHelper для нового вызова. Как еще они могут перекрываться / конфликтовать друг с другом?
Спасибо.