多线程Operation

来源:互联网 发布:防身甩棍淘宝网 编辑:程序博客网 时间:2024/05/18 22:50

文件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


0 0
原创粉丝点击