Cover by Vandad Nahavandipoor

Safari, the world’s most comprehensive technology and business learning platform.

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required

O'Reilly logo

5.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 ...

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required