线程正在退出我的应用程序

时间:2012-07-02 14:33:13

标签: iphone objective-c cocoa

我正在尝试将图像上传到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];
}

3 个答案:

答案 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,它具有处理异步操作的所有功能,这将更容易编码和安全。

link:https://github.com/AFNetworking/AFNetworking/