我正在尝试将图像上传到php文件,一切正常,但有时当网站
时慢慢加载我们的应用程序开始frizzing直到页面完成加载所以我想
关于使用线程来避免这种frizzing,但现在我们的应用程序显示并退出。我不
查看任何警告或问题...它只是进入应用程序并立即存在。请帮帮我
出
代码:
-(void) source {
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 80);
NSString *urlString = @"http://domain";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
our_label.text = [NSString stringWithFormat:@"%@", returnString];
}
-(void)som:(id)param{
[lock lock];
[lock unlock];
}
答案 0 :(得分:2)
完全错误的做法。仔细查看documentation of NSURLConnection,您将找到sendAsynchronousRequest方法:queue:completionHandler:。
你需要学习使用积木(但值得)。
答案 1 :(得分:2)
您可以在异步方法中使用NSURLRequest,但是如果您希望当前的代码可以按照这些操作进行操作
首先更改此行
[NSThread detachNewThreadSelector:@selector(multithreading:) toTarget: [MainViewController class] withObject:nil];
到
[NSThread detachNewThreadSelector:@selector(multithreading:) toTarget:self withObject:nil];
其次,您正在非UI线程中更新UI,因此请将此
包装起来our_label.text = [NSString stringWithFormat:@"%@", returnString];
围绕dispatch_get_main_queue
,如下所示
dispatch_async(dispatch_get_main_queue(), ^{
our_label.text = [NSString stringWithFormat:@"%@", returnString];
});
最后删除锁,因为你没有真正使用它们
//[lock lock];
[self source];
//[lock unlock];
答案 2 :(得分:1)
除了yan.kun的回答,
我建议您使用第三方库,例如AFNetworking
,它具有处理异步操作的所有功能,这将更容易编码和安全。