在我的应用程序中,我想使用 Websocket 协议实现多次上传和下载。
为此,我创建了一个名为的类Engine
,Upload
并且Download
Engine
- 创建 aoperationQueue
并且maximumConcurrentOperation
是 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();
}
问题: 当我尝试上传第一个视频时,它工作正常。如果我立即尝试上传第二个视频,那么它也可以正常工作。当我尝试上传第三个视频时(即当我从图库中选择视频并且视频压缩尚未开始时),应用程序冻结。仅当前两个视频上传之一完成时,该应用程序才会激活。
为什么即使maxConcurrentOperationCount
是 3 应用程序也会冻结?
提前致谢。