我的代码不是我想要的排队

时间:2014-10-27 04:25:21

标签: xcode

我有一个基于Xcode构建的应用程序,有一个用于注销用户的按钮,它包含下面的代码,我没有问题:

self.LbGoodBye.Text = @"Goodbye";

NSString *post =[[NSString alloc] initWithFormat:@"myQasidaName=%@",[self.textUserName text]];
NSLog(@"PostData: %@",post);
NSURL *url=[NSURL URLWithString:@"http:/MyWebSite/logOutUserDefaults.php"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"Response code: %ld", (long)[response statusCode]);

if ([response statusCode] >= 200 && [response statusCode] < 300) {

NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"Response ==> %@", responseData);
NSString *url = [NSString stringWithFormat:@"http:/MyWebSite/logOutUserDefaults.php?qasidaName=%@",[self.textUserName text]];
NSData *data =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
self.jasonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

[self performSegueWithIdentifier:@"GoToMain" sender:self];

我有一个标签,我想用它作为向用户说再见的消息,问题是当我把代码放在乞讨时,它在代码的其余部分完成后才起作用。

我不确定我是否有Xcode的问题,我尝试构建新的应用程序但仍然有相同的问题,我使用Xcode 6.0.1并且我开始使用Xcode 5构建此应用程序。

我是Xcode的新手,我没有那么多经验来解决这个问题。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你在应用程序的主线程中完成了代码,为什么直到它的进程没有完成它才会在屏幕上显示标签更改。

使用后台线程进行呼叫注销Web服务。下面是后台呼叫api的示例。

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
    //Background Thread add your logout api call here
    dispatch_async(dispatch_get_main_queue(), ^(void){
        //Run UI Updates [self performSegueWithIdentifier:@"GoToMain" sender:self]; add this code over here

    });
});