无法在块内部引用具有可变修改类型的声明

这是我的代码的片段,我得到上面提到的错误。

dispatch_async(background_thread, ^{ cameras camera[10]; . . for(int i=0; i<ncam; i++) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{ iPoint subPoints[10]; subPoints[0].x = camera[i].x + ((int)camera[i].mindist)*cos(camera[i].dir + (camera[i].angle)/2); . . . }); } }); 

相机实际上是C型结构,错误在于相机arrays。 有人请帮我解决这个问题。

您的相机位于堆栈中,而objective-c在具有不支持引用计数的变量的块中工作严重。 尝试在NSObject中移动此数组:

 @interface TenCameras : NSObject { @public cameras camera[10]; } @end 

那么你的代码将是这样的:

 dispatch_async(background_thread, ^{ TenCameras tenCameras; . . for(int i=0; icamera[i].x + ((int)tenCameras->camera[i].mindist)*cos(tenCameras->camera[i].dir + (tenCameras->camera[i].angle)/2); . . . }); } });