Objective c 带gcd的开关盒

Objective c 带gcd的开关盒,objective-c,xcode,concurrency,grand-central-dispatch,Objective C,Xcode,Concurrency,Grand Central Dispatch,为了不停止主线程,我尝试使用SWITCH和GCD加载我的阵列。但是Xcode不能构建我的代码。谁能解释一下为什么我可以这样使用GCD switch (number) { case 0: //case 0:exercise_name="Стойка"; break; case 1: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_

为了不停止主线程,我尝试使用SWITCH和GCD加载我的阵列。但是Xcode不能构建我的代码。谁能解释一下为什么我可以这样使用GCD

switch (number) {
        case 0:
            //case 0:exercise_name="Стойка";
            break;

        case 1:
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                @synchronized (self.handsMassage){
                    /*
                     NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]                                                                                                                  pathForResource:@"sound" ofType:@"wav"]];
                     _click  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile  error:nil];
                     self.click.delegate = self;
                     */
                    for (int i = 1; i <= 22; i++) {
                        [self.arrayOfExercise addObject:(id)[UIImage imageNamed:[NSString stringWithFormat:@"ml_%i", i]].CGImage];
                    }
                }
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self.playButton setHidden:NO];
                });
            });
            break;

        case 2:
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                @synchronized (self.loinMassage){
                    /*
                     NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]                                                                                                                  pathForResource:@"sound" ofType:@"wav"]];
                     _click  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile  error:nil];
                     self.click.delegate = self;
                     */
                    for (int i = 1; i <= 9; i++) {
                        [self.arrayOfExercise addObject:(id)[UIImage imageNamed:[NSString stringWithFormat:@"mp_%i", i]].CGImage];
                    }
                }
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self.playButton setHidden:NO];
                });
            });
            break;
开关(编号){
案例0:
//案例0:练习_name=“Сааа”;
打破
案例1:
调度异步(调度获取全局队列(调度队列优先级默认为0)^{
@同步(自我按摩){
/*
NSURL*musicFile=[NSURL fileURLWithPath:[NSBundle mainBundle]pathForResource:@“声音”类型:@“wav”];
_单击=[[AvaudioLayer alloc]initWithContentsOfURL:musicFile错误:nil];
self.click.delegate=self;
*/

对于(int i=1;i将
{
}
放在每个案例周围。如下所示:

switch (number) {
        case 0:
        {
            //case 0:exercise_name="Стойка";
            break;
        }
        case 1:
        {
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                @synchronized (self.handsMassage){
                    /*
                     NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]                                                                                                                  pathForResource:@"sound" ofType:@"wav"]];
                     _click  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile  error:nil];
                     self.click.delegate = self;
                     */
                    for (int i = 1; i <= 22; i++) {
                        [self.arrayOfExercise addObject:(id)[UIImage imageNamed:[NSString stringWithFormat:@"ml_%i", i]].CGImage];
                    }
                }
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self.playButton setHidden:NO];
                });
            });
            break;
        }
        case 2:
        {
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                @synchronized (self.loinMassage){
                    /*
                     NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]                                                                                                                  pathForResource:@"sound" ofType:@"wav"]];
                     _click  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile  error:nil];
                     self.click.delegate = self;
                     */
                    for (int i = 1; i <= 9; i++) {
                        [self.arrayOfExercise addObject:(id)[UIImage imageNamed:[NSString stringWithFormat:@"mp_%i", i]].CGImage];
                    }
                }
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self.playButton setHidden:NO];
                });
            });
            break;
        }
开关(编号){
案例0:
{
//案例0:练习_name=“Сааа”;
打破
}
案例1:
{
调度异步(调度获取全局队列(调度队列优先级默认为0)^{
@同步(自我按摩){
/*
NSURL*musicFile=[NSURL fileURLWithPath:[NSBundle mainBundle]pathForResource:@“声音”类型:@“wav”];
_单击=[[AvaudioLayer alloc]initWithContentsOfURL:musicFile错误:nil];
self.click.delegate=self;
*/

对于(int i=1;i将
{
}
放在每个案例周围。如下所示:

switch (number) {
        case 0:
        {
            //case 0:exercise_name="Стойка";
            break;
        }
        case 1:
        {
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                @synchronized (self.handsMassage){
                    /*
                     NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]                                                                                                                  pathForResource:@"sound" ofType:@"wav"]];
                     _click  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile  error:nil];
                     self.click.delegate = self;
                     */
                    for (int i = 1; i <= 22; i++) {
                        [self.arrayOfExercise addObject:(id)[UIImage imageNamed:[NSString stringWithFormat:@"ml_%i", i]].CGImage];
                    }
                }
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self.playButton setHidden:NO];
                });
            });
            break;
        }
        case 2:
        {
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                @synchronized (self.loinMassage){
                    /*
                     NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]                                                                                                                  pathForResource:@"sound" ofType:@"wav"]];
                     _click  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile  error:nil];
                     self.click.delegate = self;
                     */
                    for (int i = 1; i <= 9; i++) {
                        [self.arrayOfExercise addObject:(id)[UIImage imageNamed:[NSString stringWithFormat:@"mp_%i", i]].CGImage];
                    }
                }
                dispatch_async(dispatch_get_main_queue(), ^{
                    [self.playButton setHidden:NO];
                });
            });
            break;
        }
开关(编号){
案例0:
{
//案例0:练习_name=“Сааа”;
打破
}
案例1:
{
调度异步(调度获取全局队列(调度队列优先级默认为0)^{
@同步(自我按摩){
/*
NSURL*musicFile=[NSURL fileURLWithPath:[NSBundle mainBundle]pathForResource:@“声音”类型:@“wav”];
_单击=[[AvaudioLayer alloc]initWithContentsOfURL:musicFile错误:nil];
self.click.delegate=self;
*/

for(int i=1;i编译器错误消息是什么?@KazukiSakamoto编译器错误消息是什么?@KazukiSakamoto是)谢谢)但为什么会这样呢?因为像if语句一样,你只能在一个case后面放一条语句。你应该在条件后面放上括号。这样可以避免bug,让代码更清晰。根据代码的长度,你应该把它分解成另一个方法。Uchiugaka的评论是不正确的。你不局限于一条语句tera case:label。case标签指示执行应从何处开始,执行将持续到switch语句结束(或遇到中断)。不能将声明放在case标签之后。是)谢谢)但为什么会这样呢?因为像if语句一样,你只能在一个case后面放一条语句。你应该在条件后面放上括号。这样可以避免bug,让代码更清晰。根据代码的长度,你应该把它分解成另一个方法。Uchiugaka的评论是不正确的。你不局限于一条语句TERA case:label。case标签指示执行应该从何处开始,执行一直持续到switch语句结束(或遇到break)。不能将声明放在case标签之后。