6.12. Running Tasks Synchronously with Operations
Problem
You want to run a series of tasks synchronously.
Solution
Create operations and start them manually:
#import <UIKit/UIKit.h>
@interface
Running_Tasks_Synchronously_with_OperationsAppDelegate
:UIResponder
<
UIApplicationDelegate
>
@property
(
strong
,
nonatomic
)
UIWindow
*
window
;
@property
(
nonatomic
,
strong
)
NSInvocationOperation
*
simpleOperation
;
@end
The implementation of the application delegate is as follows:
-
(
void
)
simpleOperationEntry:
(
id
)
paramObject
{
NSLog
(
@"Parameter Object = %@"
,
paramObject
);
NSLog
(
@"Main Thread = %@"
,
[
NSThread
mainThread
]);
NSLog
(
@"Current Thread = %@"
,
[
NSThread
currentThread
]);
}
-
(
BOOL
)
application:
(
UIApplication
*
)
application
didFinishLaunchingWithOptions:
(
NSDictionary
*
)
launchOptions
{
NSNumber
*
simpleObject
=
[
NSNumber
numberWithInteger:
123
];
self
.
simpleOperation
=
[[
NSInvocationOperation
alloc
]
initWithTarget:
self
selector:
@selector
(
simpleOperationEntry:
)
object:
simpleObject
];
[
self
.
simpleOperation
start
];
self
.
window
=
[[
UIWindow
alloc
]
initWithFrame:
[[
UIScreen
mainScreen
]
bounds
]];
self
.
window
.
backgroundColor
=
[
UIColor
whiteColor
];
[
self
.
window
makeKeyAndVisible
];
return
YES
;
}
The output of this program (in the console window) will be similar to this:
Parameter Object = 123 Main Thread = <NSThread: 0x6810280>{name = (null), num = 1} Current Thread = <NSThread: 0x6810280>{name = (null), num = 1}
As the name of this class implies (NSInvocationOperation
), the main responsibility of an object of ...
Get iOS 6 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.