NSOperationQueue is your friend: https://developer.apple.com/library/mac/documentation/cocoa/reference/NSOperationQueue_class/Reference/Reference.html
It has an easier to understand API than GCD but it uses GCD in it's underlying operations. You can reuse, cancel or suspend your background operations easier.
Here is a tutorial on how to use it. http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues