iOS多线程

多线程之NSOperations和NSOperationQueu

2015-03-26  本文已影响239人  wright

GCD和NSOperation NSOperationQueue的比较

NSOperation的API使用方法

1.继承NSOperation

2.重写“main”函数

3.在“main”函数中建立“autoreleasepool”(你不能获取主线程的自动释放池)

4.把代码放入“autoreleasepool”

方法:

 优先级可以设定的值
    
    NSOperationQueuePriorityLow
    NSOperationQueuePriorityNormal
    NSOperationQueuePriorityHigh
    NSOperationQueuePriorityVeryHigh
当队列中有多个操作时,执行顺序会按照优先级排序,如果两个优先级相同,则按添加多队列中的顺序进行执行。

注意的点

NSOperationQueue API使用

NSOperationQueue 不需要你继承,或者重载任何方法。你直接创建一个对象。最好是给你的队列起一个名字以方便你运行的时候识别以及调试。

方法及属性:

建立block的例子:
__weak MyViewController *weakSelf = self;
// Add an operation as a block to a queue
[myQueue addOperationWithBlock: ^ {
NSURL *aURL = [NSURL URLWithString:@"http://www.somewhere.com/image.png"];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:aURL options:nil error:&error];
UIImage *image = nil;
If (data)
image = [UIImage imageWithData:data];

       // Update UI on the main thread.
       [[NSOperationQueue mainQueue] addOperationWithBlock: ^ {
       weakSelf.imageView.image = image;
    }];
上一篇 下一篇

猜你喜欢

热点阅读