0
我正在每60秒在后台执行一些任务。后台任务是服务器从网站请求下载文件。当请求完成时,主线程/ UI似乎被锁定,我将数据保存到sqlite。NSThread detachNewThreadSelector锁定主线程
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSThread detachNewThreadSelector:@selector(startTheBackgroundSync) toTarget:self withObject:nil];
[pool release];
- (void)startTheBackgroundSync {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// [self performSelectorInBackground:@selector(moveSynctoBack) withObject:nil];
// [self performSelectorOnMainThread:@selector(makeMyProgressBarMoving) withObject:nil waitUntilDone:NO];
serverSync = [[[ServerSync alloc]init]autorelease];
while (1==1) {
serverSync.delegate = self;
[serverSync syncNow:nil];
[NSThread sleepForTimeInterval:120];
}
[pool release];
[serverSync release];
}
虽然循环不锁定了主线程,但是当ASIHTtpRequest的数据完成了它锁定了UI进行了第二次。
是否有可能有ASIHTTPRequest在后台线程或线程它是从所谓的执行? – iosdevnyc 2011-06-12 17:50:17
@harekam_taj是的,你可以在ASIHTTPRequest子类中覆盖'threadForRequest'。请参阅源代码中的注释('ASIHTTPRequest.m')。注意:这只适用于高级用户! – Felix 2011-06-12 18:35:23