IOS - Обеспечить выполнение основной темы
Я хочу знать, как вызвать мой function
в основном потоке.
Как я могу убедиться, что мой function
вызывается в основном потоке?
(это следует за предыдущим question).
Ответы
Ответ 1
Есть ли какое-нибудь правило, которое я могу выполнить, чтобы убедиться, что мое приложение выполняет мой собственный код только в основном потоке?
Как правило, вам не нужно ничего делать, чтобы обеспечить это - ваш список вещей обычно достаточно. Если вы не взаимодействуете с каким-то API, который, случается, порождает поток и запускает ваш код в фоновом режиме, вы будете работать в основном потоке.
Если вы хотите быть уверенным, вы можете сделать что-то вроде
[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];
выполнить метод в основном потоке. (Также есть эквивалент GCD.)
Ответ 2
Это будет сделано:
[[NSOperationQueue mainQueue] addOperationWithBlock:^ {
//Your code goes in here
NSLog(@"Main Thread Code");
}];
Надеюсь, это поможет!
Ответ 3
Когда вы используете iOS >= 4
dispatch_async(dispatch_get_main_queue(), ^{
//Your main thread code goes in here
NSLog(@"Im on the main thread");
});
Ответ 4
Я думаю, что это круто, даже в целом его хорошая форма оставить вызывающего метода, ответственного за обеспечение его вызова в нужном потоке.
if (![[NSThread currentThread] isMainThread]) {
[self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO];
return;
}