Вы можете использовать флаг продолжать работать все время, это неверно:
// Somewhere accessible from the task's block and from the view controller
__block BOOL quit = NO;
dispatch_async(getDataQueue,^{
dispatch_aysnc (mainQueue, ^{
if (!quit)
{
// do first thing
}
if (!quit)
{
// do second thing
}
while (!quit)
{
// do lots of things
}
});
});
И тогда вы можете остановить фоновую задачу просто делать :
quit = YES;
Это предпочтительный метод остановки любой фоновой задачи в любом случае, поскольку это позволяет задачу выполнить очистку без, прежде чем вынужден прекратить.
Что значит «сломать» его? – borrrden