我在iOS应用中创建了这个队列,我想阻止它:
在我的.h文件中:
NSOperationQueue *uhm;
在我的.m文件中:
在viewDidLoad中:NSOperationQueue *uhm = [[NSOperationQueue alloc] init];
在我的方法中:
[uhm addOperation:[NSBlockOperation blockOperationWithBlock: ^{
… //Here I do operations that retrive data from my server
[[NSOperationQueue mainQueue] addOperationWithBlock: ^{
[self.tableView reloadData];
}];
}
}]];
但是当我调用[uhm cancelAllOperations]
时,它只是将布尔值isCancelled
设置为YES,但不会停止执行队列!
请帮帮我!
答案 0 :(得分:4)
取消操作并不会实际停止任何正在执行的操作。
它只会阻止新的启动。
您必须在操作本身中手动停止任何当前操作。
例如,如果您有代码收集下载的数据,那么在连接数据之前检查操作是否被取消。
如果操作被取消,则结束操作。
有很多方法可以做到这一点。这取决于你的操作内部。
答案 1 :(得分:1)
就像你提到的那样,你从另一种方法调用cancelAllOperations,而你分配的对象不在你的 .h 中,所以你要调用另一个对象,而不是你初始化的那个“嗡嗡声”
所以试着宣布NSOperationQueue *嗯;在你的.h所以它会是全局的然后你可以调用[uhm cancelAllOperations];来自你想要的任何方法。