關於此問題的「重複」狀態:
此問題在2012年11月問過,它包含問題的詳細描述並有3個答案。
在2013年2月(這個「重複」之後3個月)被問及被稱爲「原始」的問題,沒有詳細的描述,只有2個答案。兩個答案中的最好答案只是一個鏈接答案。purgeIdleCellConnections
爲什麼我在我的控制檯得到這個消息?:
purgeIdleCellConnections: found one to purge conn = (some object-ID)
當我的應用程序開始我發送郵件到我的服務器。我這樣做有以下代碼行:
@implementation AppStatus {
NSMutableData* activeDownload;
NSURLConnection* Connection;
}
- (id) init {
self = [super init];
if (self) {
activeDownload = nil;
Connection = nil;
}
return self;
}
- (void)sendStatus:(NSString*)url {
NSString* escaped = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURLConnection* conn =[[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:escaped]] delegate:self];
Connection = conn;
NSLog(@"%s Connection=%@",__PRETTY_FUNCTION__,Connection);
}
在同一個文件中我有此委託的方法:
- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data {
NSLog(@"%s connection=%@",__PRETTY_FUNCTION__,connection);
[activeDownload appendData:data];
}
- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error {
NSLog(@"%s connection=%@",__PRETTY_FUNCTION__,connection);
activeDownload = nil;
Connection = nil;
//do nothing else; just ignore the error
}
- (void)connectionDidFinishLoading:(NSURLConnection*)connection {
NSLog(@"%s Connection=%@",__PRETTY_FUNCTION__,Connection);
NSString* answer = [[NSString alloc] initWithData:activeDownload encoding:NSUTF8StringEncoding];
//do something usefull with the server's answer
activeDownload = nil;
Connection = nil;
}
當我(不是模擬器)運行在真實設備上這個程序,我在控制檯得到這個消息:
2012-11-22 20:41:51.309 BookMan[376:907] -[AppStatus sendStatus:] Connection=<NSURLConnection: 0x1dd7ff40>
2012-11-22 20:41:51.929 BookMan[376:907] -[AppStatus connection:didReceiveData:] Connection=<NSURLConnection: 0x1dd7ff40>
2012-11-22 20:41:51.935 BookMan[376:907] -[AppStatus connectionDidFinishLoading:] Connection=<NSURLConnection: 0x1dd7ff40>
purgeIdleCellConnections: found one to purge conn = 0x1dd8ff60
的connectionDidFinishLoading消息後purgeIdleCellConnections消息apears約4秒或5秒。
如您所見,purgeIdleCellConnections消息的對象編號與我在應用中創建和使用的連接編號不同。
也許重要提示:只有當我在真實設備(帶有iOS 6.0.1的iPhone 4)上運行應用程序時,纔會收到此消息。此設備使用3G連接,而不是WIFI連接。目前我沒有WIFI網絡來測試這是否發生在WIFI連接上。
我在模擬器上運行應用程序時沒有收到此消息。
當我改變了方法sendStatus:本:
- (void)sendStatus:(NSString*)url {
NSString* escaped = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//NSURLConnection* conn =[[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:escaped]] delegate:self];
//Connection = conn;
NSLog(@"%s Connection=%@",__PRETTY_FUNCTION__,Connection);
}
我得到這個產量在控制檯:
2012-11-22 20:45:11.927 BookMan[391:907] -[AppStatus sendStatus:] Connection=(null)
,當我不創建我得不到的purgeIdleCellConnections消息連接。
那麼這意味着消息,爲什麼我得到它?:
purgeIdleCellConnections: found one to purge conn = (some object-ID)
我不使用UIWebView,並且在我的應用程序中不使用Ajax。上面描述了我所用的全部內容。 –