Objective c 在目标C中中断方法的执行

Objective c 在目标C中中断方法的执行,objective-c,Objective C,我正在写一个目标C程序。下面我已经包括了一个方法,我在点击该程序中的一个按钮后正在运行该方法。程序中还有一个停止按钮,当有人点击停止按钮时,我想停止这个方法的执行,并将应用程序的UI恢复到运行该方法之前的正常状态。有人能帮我做这件事吗 -(JobStatus)beginUploadingTask{ void (^progressBlock)(void); progressBlock = ^{ @try{ do { //

我正在写一个目标C程序。下面我已经包括了一个方法,我在点击该程序中的一个按钮后正在运行该方法。程序中还有一个停止按钮,当有人点击停止按钮时,我想停止这个方法的执行,并将应用程序的UI恢复到运行该方法之前的正常状态。有人能帮我做这件事吗

-(JobStatus)beginUploadingTask{

void (^progressBlock)(void);
progressBlock = ^{       
    @try{      
        do {

            // calls to some method

                 dispatch_async(dispatch_get_main_queue(), ^{
                    //execute some code

                 });

        } while (index<fileSize);        
    }
    @catch (NSException *ex) {
        [self taskErrorWithMessage:@"Error in uploading your file. Please try again"];
        return;
    }
    @finally {

        NSLog(@ "finally block executed");
    }   
};
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_async(queue, progressBlock);

return TaskStateUploaded;   
-(作业状态)开始执行任务{
无效(^progressBlock)(无效);
progressBlock=^{
@试试{
做{
//对某些方法的调用
dispatch\u async(dispatch\u get\u main\u queue()^{
//执行一些代码
});

}当(据我所知,你无法停止队列中的一个块,因此当按下按钮时,可能会在主线程上设置一个标志,以检查块?我是Objective-C新手。你能解释更多吗?好的,这是一个完全的猜测。。在.m的顶部,你会有你的标志,例如
静态BOOL shouldquitlop=NO;
,然后在你的类有一个按钮操作:
-(iAction)quitbutonpressed:(id)sender{shouldQuitLoop=YES;}
。最后在你的块中,你有
@try{do{if(shouldQuitLoop)break;…。
。我自己没有尝试过,所以它可能不起作用:)