0
Apple guide對於釋放連接對象非常具體:它在didFailWithError
和connectionDidFinishLoading
中完成。帶有NSURLConnection的異步請求:何時發佈
然而,當我這樣做,我後來在zombi模式
*** -[NSURLConnection releaseDelegate]: message sent to deallocated instance 0x1001045b0
似乎得到這個,有一個在AppKit的一些代碼,釋放我的連接。
我很樂意假設蘋果指南是錯誤的,但不想得到一些可怕的內存泄漏或引入一些細微的不兼容與舊的OSX版本或類似的東西。
在這種情況下忽略文檔安全嗎?
編輯
代碼創建請求
URLConnectionDelegate *delegate = [[URLConnectionDelegate alloc] initWithSuccessHandler:^(NSData *response) {
...
}];
[NSURLConnection connectionWithRequest:request delegate:delegate];
// I do not release delegate when testing for this issue, not sure whether I should in general
Delegate類本身
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
successHandler(receivedData);
[receivedData release];
Block_release(successHandler);
// do we really need this????????
[connection release];
}
從文檔:'NSURLConnection`在初始化時保留其委託。它會在連接完成加載,失敗或取消時釋放委託。'看起來您已經過度釋放委託。 – 2011-02-06 02:29:49
@Bavarious我不在這裏發佈代表。 (我是否應該是另一個問題)當我添加`[連接釋放]時出現錯誤;`當我刪除它時消失。 – 2011-02-06 02:32:21