文件1:ViewController.m
#import "ViewController.h"
#import "MyOperation.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
// [super viewDidLoad];
// int age = 0;
// [self method:&age];
//
// NSLog(@"%d",age);
NSInvocationOperation *invacationOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(method:) object:@"+++"];
[invacationOperation start];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(method1:)]];
[invocation setTarget:self];
[invocation setSelector:@selector(method1:)];
NSString *str = @"xxx";
[invocation setArgument:&str atIndex:2];
NSInvocationOperation *invocationOp = [[NSInvocationOperation alloc] initWithInvocation:invocation];
// [invocationOp start];
NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"blockOperation");
NSLog(@"%@",[NSThread isMainThread]?@"main":@"sub");
}];
[blockOperation addExecutionBlock:^{
NSLog(@"executionBlock");
NSLog(@"%@",[NSThread isMainThread]?@"main":@"sub");
}];
[blockOperation addExecutionBlock:^{
NSLog(@"executionBlock2");
NSLog(@"%@",[NSThread isMainThread]?@"main":@"sub");
}];
[blockOperation addExecutionBlock:^{
NSLog(@"executionBlock3");
NSLog(@"%@",[NSThread isMainThread]?@"main":@"sub");
}];
[blockOperation start];
// NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
NSOperationQueue *operationQueue = [NSOperationQueue mainQueue];
//可以用来操作UI
[operationQueue addOperation:invocationOp];
MyOperation *operation = [[MyOperation alloc] init];
[operation start];
// [operationQueue addOperation:blockOperation];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)method:(NSString *)value
{
NSLog(@"%@",value);
NSLog(@"%@", [NSThread isMainThread]?@"Main":@"Sub");
NSLog(@"%s", __PRETTY_FUNCTION__);
// NSLog(@"%@: %s", self, _cmd);
}
- (void)method1:(id)object
{
NSLog(@"%s",__PRETTY_FUNCTION__);
NSLog(@"%@",[NSThread isMainThread]?@"main":@"sub");
NSLog(@"%@",object);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
文件2:MyOperation.h
#import <Foundation/Foundation.h>
@interface MyOperation : NSOperation
@end
文件3:MyOperation.h
#import "MyOperation.h"
@implementation MyOperation
- (void)main
{
NSLog(@"---");
}
@end