多线程 之 NSOperation

本文介绍了一个使用NSOperationQueue实现的异步打印数字的例子。通过创建一个名为PrintNumber的NSOperation子类并重写其main方法来执行异步任务。此外,还展示了如何设置NSOperationQueue的最大并发操作数,并将PrintNumber实例添加到队列中以实现异步执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//创建一个操作类,必须继承NSOperation, 只需要重写main方法即可(Main方法便是我们需要的异步操作)
@interface PrintNumber : NSOperation

@end

@implementation PrintNumber

- (void)main
{
    NSLog(@"1");
}

@end

//调用异步
@interface ViewController ()

@property (nonatomic,readwrite,strong) NSOperationQueue *queue;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    self.queue = [[NSOperationQueue alloc] init];
    
    //队列的最大操作数(可以参考设置为CPU的核心数)
    self.queue.maxConcurrentOperationCount = 3;
    
    for (NSUInteger i=1; i<1000; ++i) {
        PrintNumber *pn = [[PrintNumber alloc] init];
        //必须将其加入队列中,虽然后面没有出现self.queue的操作,但是如果不添加的化,pn不会执行。
        //我猜测,NSOperationQueue 全局的吧,所以,添加了,才会执行,执行完成后自动删除;
        [self.queue addOperation:pn];
        pn.completionBlock=^{
            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            }];
        };
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值