Parallel 0.0.1

Parallel 0.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新版本2014年12月

Ajay MT 维护。



Parallel 0.0.1

Parallel允许您在后台线程上执行选择器,并在选择器执行完毕后调用回调。

以下是一个例子

- (instancetype)init
{
    if (self = [super init])
        Parallel *parallel = [[Parallel alloc] init];

    return self;
}

- (id)doSomethingThatTakesTime
{
    return [something thatTakesTime];
}

- (void)someMethod
{
    [parallel performSelector:@selector(doSomethingThatTakesTime)
                     onTarget:self
                 withCallback:^(id result){
        NSLog(@"done: %@", result);
    }];

    NSLog(@"doing something that takes time...");
}

该程序将记录“执行耗时的操作...完成: ”。

工作原理

-[NSThread detachNewThread...]-[NSObject performSelectorInBackground...]不同,Parallel每次在执行选择器时不会创建一个新的线程。以下是它的工作原理

  1. 您调用[[Parallel alloc] init],这将启动一个后台线程并在该线程上启动一个事件循环。事件循环持续检查事件队列是否有新的事件。

  2. 您调用-[Parallel performSelector...],这会将一个事件添加到事件队列。

  3. 在后台线程上运行的事件循环处理新的事件。与事件关联的选择器被执行,并且关联的回调块在主线程上被调用。

  4. 执行完各种选择器后,您调用-[Parallel cancel],这将关闭事件循环和后台线程。

安装

您可以将整个内容直接放入项目中,或者您可以使用CocoaPods进行安装。

API

-[Parallel init]

初始化Parallel对象并启动后台线程和事件循环。

-[Parallel performSelector:(SEL)sel onTarget:(id) target withCallback:(void (^)(id))callback]

将选择器添加到事件队列。一旦先前添加的所有选择器都已执行,该选择器(sel)将在后台线程上的target上执行。一旦此选择器被执行,回调块(callback)将在主线程上被调用,并且如果有的话,将执行下一个选择器。callback带有单个参数:由sel返回的值。

-[Parallel cancel]

结束事件循环并杀死后台线程。

运行测试

打开xcodeproj并按Command-U。如果您偏好终端,可以这样做

$ xcodebuild test -project Parallel.xcodeproj -scheme Parallel -destination 'platform=OS X,arch=x86_64'

许可

MIT许可证。详细信息请见./LICENSE