iOS - Ensure execution on main thread [duplicate] iOS - Ensure execution on main thread [duplicate] multithreading multithreading

iOS - Ensure execution on main thread [duplicate]


This will do it:

[[NSOperationQueue mainQueue] addOperationWithBlock:^ {   //Your code goes in here   NSLog(@"Main Thread Code");}];

Hope this helps!


When you're using iOS >= 4

dispatch_async(dispatch_get_main_queue(), ^{  //Your main thread code goes in here  NSLog(@"Im on the main thread");       });


there any rule I can follow to be sure that my app executes my own code just in the main thread?

Typically you wouldn't need to do anything to ensure this — your list of things is usually enough. Unless you're interacting with some API that happens to spawn a thread and run your code in the background, you'll be running on the main thread.

If you want to be really sure, you can do things like

[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];

to execute a method on the main thread. (There's a GCD equivalent too.)