我有一个函数“downLoadButtonStatusSetter”,它使用计时器每15秒调用一次。 然后它调用发送“sendInstantGetInfoRequest”数据到服务器并检查连接是否可用,并设置一个标志。 应用程序正常工作,但在无法连接到服务器时进入繁忙状态一段时间。 我应该如何调用这些方法,以便“它每15秒调用一次并设置标志,即使它无法连接到服务器, 而不影响程序的主要执行。我尝试过线程调用的组合,但不能,请帮助。
计时器调用代码:
updateCheckTimer= [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(downLoadButtonStatusSetter) userInfo:nil repeats:YES];
ButtonStatusSetter代码:
-(BOOL) downLoadButtonStatusSetter
{
[self sendInstantGetInfoRequest];
if( instantGetInfoOffLineForButton)
{
//setbutton color etc....
}
}
-(NSArray *)sendInstantGetInfoRequest
{
NSString *getInfoURL=[SAGlobal getInfoURL];
NSArray *keys = [NSArray arrayWithObjects:@"username",@"password", nil];
NSArray *objects = [NSArray arrayWithObjects:SharedAppDelegatee.SAloginName, SharedAppDelegatee.SAloginPassword, nil];
jsonManager = [[JsonRequestManager alloc] init];
SAJSonResult* resultk=[jsonManager sendJsonAsPOSTData: keys AndValues:objects toURL: getInfoURL];
if(resultk.jsonError)
{
instantGetInfoOffLineForButton=true;
}
else{
instantGetInfoOffLineForButton=false;
}
return resultk.jsonResult;
}
发送代码的JSON请求:
-(SAJSonResult *) sendJsonAsPOSTData:(NSArray *) keys AndValues:(NSArray *) values toURL:(NSString *)anURL
{
////..................
NSURL *url1 = [NSURL URLWithString:anURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url1];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: jsonData];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
NSURLResponse *theResponse =[[NSURLResponse alloc]init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&jsonError];
if (jsonError) {
..............
return jResult;
}
else
{
...............
return jResult;
}
}
}