0
我有這段代碼,但我不明白爲什麼我必須在主線程上運行此代碼。 如果我在後臺運行它不會執行發佈請求。這是一個錯誤嗎? 我該如何解決這個問題?NSURLConnection當我在後臺運行它時出現錯誤....我該如何解決?
- (void)setRead:(MWFeedItem *)entry
{ [self getToken:YES];
NSString *url=[NSString stringWithFormat:@"https://www.google.com/reader/api/0/edit-tag?a=user/-/state/com.google/read&i=%@&T=%@", entry.identifier, token];
[self postRequestWithURLState:url];
}
- (void)postRequestWithURLState:(NSString *)url
{
NSString *bodyRequest = nil;
NSURL *requestURL = [NSURL URLWithString:url];
NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] init];
//NSLog(@"-------------- bodyRequest: %@", bodyRequest);
[theRequest setURL:requestURL];
[theRequest setTimeoutInterval:0.5];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody:[bodyRequest dataUsingEncoding:NSASCIIStringEncoding]];
[self.oauthAuthentication authorizeRequest:theRequest];
[NSURLConnection connectionWithRequest:theRequest delegate:self];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
這是我的電話:
-(void)segnaLettura:(MWFeedItem *)item{
[reader setRead:item];
}
- (void) segnaread:(MWFeedItem *)item{
[self performSelectorOnMainThread:@selector(segnaLettura:) withObject:item waitUntilDone:NO];
}
我使用segnaread將我的項目標記爲在Google閱讀器中閱讀。當連接速度很慢時,它會凍結我的GUI幾秒鐘!這就是爲什麼我需要在後臺真正做到這一點。我認爲我在主線程上運行的代碼行凍結了我的應用程序 – 2012-02-26 00:37:45
如果連接到網絡會凍結您的應用程序,那麼您的操作不正確。解決方案是不移動到後臺線程,但找出您正在同步連接到網絡的位置。儀器可以在這裏有所幫助。在Time Profiler的主線程中使用「對所有線程狀態進行採樣」。如果你不確定,這會告訴你你掛在哪裏。 – 2012-02-27 14:29:13
非常感謝 – 2012-02-29 23:28:32