此问题的代码太长,无法使用。但我很确定我的问题与发布课程有关。
我有一个帮助类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。他们如何重叠/相互冲突?
谢谢。
答案 0 :(得分:0)
首先,你永远不会强制解除分配。如果您严格遵守内存管理规则,那么您甚至不必担心它。对于规则看看:
如果您的应用程序崩溃,那么听起来更像是早期发布的内容。可能是您设置为连接委托的对象。最后但并非最不重要的是你看过ASIHTTPRequest处理连接?它是一个CFNetwork包装器,使用起来非常简单,非常强大。
希望这会有所帮助。