0

我正在尝试将图像上传到 php 文件,一切正常,但有时当网站

加载我们的应用程序开始变慢,直到页面加载完成,所以我想

关于使用线程来避免这种毛躁,但现在我们的应用程序显示并退出。我不

看到任何警告或问题......它只是进入应用程序并立即存在。请帮我

出去

编码:

-(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];
}
4

3 回答 3

2

完全错误的做法。仔细查看NSURLConnection 的文档,你会发现 sendAsynchronousRequest:queue:completionHandler: 方法。

不过,您将需要学习使用积木(但这是值得的)。

于 2012-07-02T14:38:43.040 回答
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];
于 2012-07-02T14:38:44.957 回答
1

除了yan.kun的回答,

我建议您使用第三方库,例如AFNetworking它具有处理异步操作的所有功能,这样更易​​于编码和安全。

链接:https ://github.com/AFNetworking/AFNetworking/

于 2012-07-02T14:42:03.733 回答