Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 为NSOperationQueue设置并发操作只会导致该操作数_Iphone_Ios_Multithreading_Nsoperation_Nsoperationqueue - Fatal编程技术网

Iphone 为NSOperationQueue设置并发操作只会导致该操作数

Iphone 为NSOperationQueue设置并发操作只会导致该操作数,iphone,ios,multithreading,nsoperation,nsoperationqueue,Iphone,Ios,Multithreading,Nsoperation,Nsoperationqueue,MyI有一个NSOperationQueue,其中包含NSOperation对象 NSOperationQueue *aQueue = [[ NSOperationQueue alloc ] init]; [aQueue setMaxConcurrentOperationCount:3]; for (int index=0; index<=5; index++) { MYOperation *anOperation = [[MYOperation alloc] init];//M

MyI有一个NSOperationQueue,其中包含NSOperation对象

NSOperationQueue *aQueue = [[ NSOperationQueue alloc ] init];
[aQueue setMaxConcurrentOperationCount:3];

for (int index=0; index<=5; index++) {
    MYOperation *anOperation = [[MYOperation alloc] init];//MYOperation subclass from NSOperation
    [aQueue addOperation:anOperation];
}
NSLog(@"Number of Operations:%d",[aQueue operationCount]);//It gives 5 count
NSOperationQueue*aQueue=[[NSOperationQueue alloc]init];
[aQueue setMaxConcurrentOperationCount:3];

for(int index=0;index
NSOperationQueue
管理线程在后台执行提交的操作。(从10.6开始使用Grand Central Dispatch)。默认情况下,提交的操作在辅助线程上执行。
提交一批操作后,您将立即查询操作队列-此时,队列可能尚未开始执行操作,因此正确报告的操作总数为6。
如果在查询队列之前添加一些延迟,则队列可能已完成所有操作并报告计数0

示例代码:

NSOperationQueue *aQueue = [[ NSOperationQueue alloc ] init];
[aQueue setMaxConcurrentOperationCount:3];

for (int index=0; index<=5; index++) {
    MYOperation *anOperation = [[MYOperation alloc] init];//MYOperation subclass from NSOperation
    [aQueue addOperation:anOperation];
}

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    NSLog(@"Number of Operations:%d",[aQueue operationCount]);//It gives 5 count
});
NSOperationQueue*aQueue=[[NSOperationQueue alloc]init];
[aQueue setMaxConcurrentOperationCount:3];

对于(int指数=0;index@MikePollard,为什么队列丢弃的操作多于其并发值?下面是类文档中的一些内容:
NSOperation类是一个抽象类,用于封装与单个任务关联的代码和数据
。您不能直接使用
NSOperation
类,必须重写设置它并设置它将运行的一些操作。第四个操作被丢弃的证据在哪里?第五个和第六个操作的作用是什么?如果可能,还显示
MyOperation
的源代码,并确保操作完成(如果它们是并发的,则在它们完成时设置
isFinished
,否则它们将继续阻塞队列)。