7.12. Running Tasks Asynchronously with Operations
Problem
You want to execute operations concurrently.
Solution
Use operation queues. Alternatively, subclass NSOperation
and detach a new thread on the
main
method.
Discussion
As mentioned in Recipe 7.11, operations, by
default, run on the thread that calls the start
method. Usually we start operations on
the main thread, but at the same time we expect the operations to run on
their own threads and not take the main thread’s time slice. The best
solution for us would be to use operation queues. However, if you want to manage your operations manually, which I
do not recommend, you can subclass NSOperation
and detach a new thread on the
main method. Please refer to Recipe 7.15 for more information
about detached threads.
Let’s go ahead and use an operation queue and add two simple invocation operations to it. (For more information about invocation operations, please refer to this chapter’s Introduction. For additional example code on invocation operations, please refer to Recipe 7.11.) Here is the declaration (.m file) of the application delegate that utilizes an operation queue and two invocation operations:
@interface
AppDelegate
()
@property
(
nonatomic
,
strong
)
NSOperationQueue
*
operationQueue
;
@property
(
nonatomic
,
strong
)
NSInvocationOperation
*
firstOperation
;
@property
(
nonatomic
,
strong
)
NSInvocationOperation
*
secondOperation
;
@end
@implementation
AppDelegate
The inside of the implementation (.m file) of the application delegate is ...
Get iOS 7 Programming Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.