iphone-异步上传和下载操作冻结用户界面
在我的应用程序中,我想使用Websocket协议实现多次上传和下载 为此,我制作了一个名为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
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个问题,这些问题与您编写的代码的功能非常相关。每个问题都应该是一个完全独立的问题。。我正在删除一些问题