I have an application that downloads data from the internet when the user presses a button. I am using NSURLConnection sendSynchronousRequest method to download the data. I need to handle the problems with connection somehow. For now I just check if the data (data is a NSString) is equal to @"". But I don't know if that is OK. And then there is another problem that is related to this error handling. In the method that downloads the data I have a [status setText"Downloading data..."]; (status is a label used to display current status - and it works for errors). This line of code should get executed before sendSynchronousRequest but it doesn't. When I press the button the thing starts downloading but the message Downloading data... doens't appear. Of course the whole application freezes and the user doesn't know why until the data is downloaded or an error message appears. So why doesn't the downloading message appear when I start downloading?