Starting and stopping the busy mode
Remember that we want to show an activity indicator and disable all the toolbar items while LightWork is busy saving or sharing a photo. Conversely, when LightWork is no longer busy with the photo, we want to hide the activity indicator and re-enable the toolbar items. As these actions affect the GUI, we must ensure that they run on the app's main thread.
Note
If our code is running on a background thread, nothing will happen when we try to show or hide the activity indicator.
To run code on a specific thread, we can make a post to the thread's event queue. The iOS SDK provides a C function, dispatch_async
, which takes a target queue and code block as arguments. Another C function, dispatch_get_main_queue()
, enables us to get the main thread's event queue. Let's use these functions in the following helper method, which starts the busy mode:
- (void)startBusyMode { dispatch_async(dispatch_get_main_queue(), ^{ [self.activityIndicatorView startAnimating...