Подтвердить что ты не робот

NSOperationQueue mainQueue vs performSelectorOnMainThread?

Какая разница между этим:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    [self doSomthing:object];
}];

и это:

[self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO]
4b9b3361

Ответ 1

[self performSelectorOnMainThread:@selector(doSomething:) 
                       withObject:object 
                    waitUntilDone:NO]

Будет выполнять селектор справа, когда он вызывается. Это то, что вам нужно использовать, если вы хотите повлиять на пользовательский интерфейс из фонового потока. Если вы скажете YES - waitUntilDone, он заблокирует поток до тех пор, пока метод не завершится.

mainQueue добавляет этот блок в очередь операций mainthread, но не гарантирует, когда он будет выполнен. В этой очереди могут быть другие элементы, ожидающие выполнения.