我是ios Development的新手。我需要调用api从web获取信息,在控制器2中我正在调用我的api来显示来自web的信息和来自控制器1的按钮动作我正在调用控制器2.我在控制器2的视图中实现了自定义加载器处理时间,但我不知道为什么从控制器1去控制器2需要这么多时间,我不知道如何减少处理时间或者你能告诉我可以在按钮动作的处理时间内实现加载程序。需要帮助。
调用api -
NSURLRequest *theRequest=[NSURLRequest requestWithURL:getAllClassifications cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSData *returnData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:nil error:nil];
// NSLog(@"return id =%@",returnData);
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:returnData
options:kNilOptions
error:&error];
//NSDictionary *location = [json objectForKey:@"npidata"];
NSArray *latestLoans = [json objectForKey:@"taxonomy"];
recipes = [latestLoans valueForKey:@"classification"];
firstname = [latestLoans valueForKey:@"classification"];
实现自定义加载器 -
NSURL *url = [[NSBundle mainBundle] URLForResource:@"loadingg" withExtension:@"gif"];
self.loader.image = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfURL:url]];
float progress = 0.0f;
while (progress < 1.0f) {
progress += 0.01f;
HUD.progress = progress;
usleep(50000);
}
[NSTimer scheduledTimerWithTimeInterval:progress target:self selector:@selector(abcd) userInfo:nil repeats:NO];
答案 0 :(得分:0)
@jrturton似乎做对了,你正在做NSURLConnection sendSynchronousRequest
,它会在返回所有数据之前停止。您会发现系统使用异步请求更具响应性。
NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately: true];
然后在数据准备好之前立即返回到您的代码。之后,它将回调您必须定义的委托方法,为您提供数据。在http://codewithchris.com/tutorial-how-to-use-ios-nsurlconnection-by-example/处有一个简单的教程,the apple documentation处有大量详细信息