iphone-异步上传和下载操作冻结用户界面

iphone-异步上传和下载操作冻结用户界面,iphone,ios,nsoperation,Iphone,Ios,Nsoperation,在我的应用程序中,我想使用Websocket协议实现多次上传和下载 为此,我制作了一个名为Engine、Upload和Download 引擎-创建一个操作队列,最大并发操作为3 Upload和Download-NSOperation的子类,并覆盖main方法。在main方法中,两个类都有以下语句 Engine.m -(id)init { if(self = [super init]) { opQueue = [[NSOperationQueue alloc

在我的应用程序中,我想使用Websocket协议实现多次上传和下载

为此,我制作了一个名为
Engine
Upload
Download

引擎
-创建一个
操作队列
最大并发操作
为3

Upload
Download
-NSOperation的子类,并覆盖
main
方法。在
main
方法中,两个类都有以下语句

Engine.m
-(id)init
{
     if(self = [super init])
     {
          opQueue = [[NSOperationQueue alloc] init];
          opQueue.maximumConcurrentOperationCount = 3 ;
     }
}
-(void)startUploadWithPath:(NSString *)file
{
    Upload *up = [[Upload alloc] initWithPath:file];
    [opQueue addOperation:up];
}

-(void)startDownloadWithPath:(NSString *)file
{
    Download *down = [[Upload alloc] initWithPath:file];
    [opQueue addOperation:down];
}

Upload.m and Download.m
-(void)main
{
   //start transfering data to server

   while(workCompleted != YES)
    {
        // wait()
    } 

    // when work completed
    //insertIntoDB();
}
问题:当我尝试上传第一个视频时,效果很好。如果我立即尝试上传第二个视频,那么它也可以正常工作。当我尝试上载第三个视频时(即,当我从gallery中选择视频且视频压缩尚未开始时),应用程序冻结。仅当前两次视频上载中的一次完成时,应用程序才会激活

为什么即使
maxConcurrentOperationCount
为3,应用程序仍会冻结


提前感谢。

尝试并行上传视频,例如:

[NSThread detachNewThreadSelector:@selector(inParallel) toTarget:self withObject:nil];

 ...

-(void)inParallel {

NSLog(@"occurs in parallel");

 }

这不应该冻结UI,但值得一试

您完全没有发布真正的代码,但是您提出了5个问题,这些问题与您编写的代码的功能非常相关。每个问题都应该是一个完全独立的问题。。我正在删除一些问题