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

IOS - Обеспечить выполнение основной темы

Я хочу знать, как вызвать мой function в основном потоке.

Как я могу убедиться, что мой function вызывается в основном потоке?

(это следует за предыдущим question).

4b9b3361

Ответ 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;
}