正如上面的问题所述,我对 iOS 很陌生;我试图做这 3 个简单的步骤。
- 显示警报视图
- 做解析的东西
- 解除警报
我一直在寻找我们在 android 中的东西,即 Pre Execute、doInBackground 和 Post Execute()。
这是我尝试过的。
parserAlert = [[UIAlertView alloc] initWithTitle:@"Loading" message:@"Please Wait" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[parserAlert show];
dispatch_queue_t queue = dispatch_queue_create("com.abc.testing", DISPATCH_QUEUE_SERIAL);
dispatch_sync(queue,^{
DBHandler *myDB= [[DBHandler alloc] init];
[myDB fetchResults];
dispatch_async(dispatch_get_main_queue(),^{
[parserAlert dismissWithClickedButtonIndex:0 animated:YES];
});
});
下面是 fetchResult 方法。
- (void) fetchResults
{
IParser *i = [[IParser alloc] init];
[i startParse];
AGParser *ag = [[AGParser alloc] init];
[ag startParse];
GParser *g = [[GParser alloc] init];
[g startParse];
HParser *h = [[HParser alloc] init];
[h startParse];
SParser *s = [[SParser alloc] init];
[s startParse];
}
这是 startParse。
NSString *url = @"http://abcd.com/Service_URL/Service.asmx/GetNotes";
NSURL *nsUrl = [[NSURL alloc] initWithString:url];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:nsUrl];
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:request delegate:self];
responseData = [[NSMutableData alloc] init];
[con start];
当我运行上述代码时,Alerview 会在一秒钟内显示并关闭。在方法上添加日志我观察到 fetchresults 方法立即返回并且警报视图被关闭。然而 fetchResults 相关线程(连接方法,解析器方法)继续执行,但 alerview 被解除。
我需要一个指导方针,如何在所有相关方法都完成之前阻止代码。
谢谢你的时间。