Question: I've been trying to implement this for a long time and I have gotten no favorable results.

Say I have a method in the which an HTTP request is performed (specifically, a twitter update), and say I want to display a `UIActivityIndicatorView` while the HTTP request is in progress (I know when it is done because there are delegate methods that are called when the request is done, either with positive results or negative ones).

I've seen many answers that say that threading is necessary for the implementation of this class. At first I tried calling the `startAnimating` method in a different thread and the `stopAnimating` method directly (without starting a new thread). After that I saw how [this guy](http://a.prokhorenko.us/this-is-how-we-make-uiactivityindicatorview-w) does it and I thought this was safer as I was starting and stopping the indicator in two different methods (the delegate methods for the twitter update).

However, none of this two ways of doing this have given me the results I want (the activity indicator does not show up at all). Is there anything I'm missing?

Thank you in advance and I apologize if my question is too long.  

Your help is very much appreciated.

Answer: 
Threading is absolutely forbidden when working with UIKit subclasses. You may have seen reports that UIActivityIndicatorView uses threading internally, but in no way does that mean you can access the object from multiple threads. All UIView subclasses (including UIActivityIndicatorView) must only be accessed from the main thread. This includes calling `-startAnimating` and `-stopAnimating`.

If you rewrite your code such that you're only ever accessing the activity view on the main thread, and it still isn't working, then I would guess that the view was either not added to a visible view, is covered up by another view, or has a frame that puts itself outside of the visible area of its superview.
MBProgressHUD it's also easy and shows and hides itself when the secondary thread has started/finished. Something like this:

```
[HUD showhileexecuting:"yourstuff" animated:YES]

```

"Yourstuff" will run on a separate thread.

You should not perform UI activities in a secondary thread.