iPhone上传新线程

时间:2010-09-15 21:01:22

标签: iphone upload photo nsthread fbconnect

我一直在尝试在我的应用程序中实现一个后台线程,以便进行长时间的移植上传。

我正在使用FBConnect SDK并且它一直运行良好,但我希望保持GUI端的顺利运行,此时应用程序在开始上传之前会有明显的停顿。

目前发生的事情是我将上传作业添加到队列中,然后运行“startQueue”。

这将从队列中取出第一份作业,调整图像大小并开始上传到Facebook。

只有在发出URL请求时,它才开始在自己的线程中运行,然后我才能恢复对GUI的控制。

我想要的是能够将作业添加到队列中,然后在单独的线程中运行“startQueue”。这会立即让我重新控制GUI。

正在发生的事情是我立即取回GUI并在新线程中调整图像大小)并开始Facebook上传(也在新线程中),但之后什么都没有。

对于这个子线程中可以做什么和不可以做什么有什么限制吗?是否不允许URL连接?手机上似乎没有任何错误,我可以继续向队列中添加作业,但没有问题,但初始上传没有完成。

init方法创建线程......

bgThread = [[NSThread alloc] initWithTarget:self selector:@selector(startQueue) object:nil];

然后添加作业方法启动它......

[bgThread start];

然后这样运行......

-(void)startQueue
{
    running = TRUE;

    bgPool = [[NSAutoreleasePool alloc] init];

    [self startJob];
}

-(void)startJob
{
    NSDictionary *currentJob = [NSDictionary dictionaryWithDictionary:[jobQueue objectAtIndex:0]];
    NSArray *networks = [currentJob objectForKey:@"networks"];

    NSLog(@"Resizing image");

    NSLog(@"Starting Uploads");

    for (int i = 0; i < [networks count]; i++)
    {
        NSString *networkName = [networks objectAtIndex:i];

        if ([networkName isEqualToString:@"Facebook"])
        {
            NSLog(@"Facebook");
            currentUploads += 1;
            [self.fbDelegate uploadPhoto:uploadImage withCaption:[currentJob objectForKey:@"caption"]];
        }
    }
}

不使用线程(即只运行startJob)它完全可以正常工作。当我调用bgThread启动它运行完美时,我得到了Facebook NSLog但是工作永远不会完成。它甚至没有完成错误。

感谢您提供的任何指示或提示!

奥利弗

0 个答案:

没有答案