ios - 有没有办法像这样向 NSOperationQueue 添加 block

标签 ios nsoperationqueue block

我正在尝试理解 NSOperationQueue,并尝试创建尽可能简单的示例。我有以下内容:

NSOperationQueue *myOQ=[[NSOperationQueue alloc] init];

[myOQ addOperationWithBlock:^(void){
  NSLog(@"here is something for jt 2");
}];
[myOQ addOperationWithBlock:^(void){
  NSLog(@"oh is this going to work 2");
}];

但是想这样做:

void  (^jt)() = ^void(){
  NSLog(@"here is something for jt");
};

void (^cl)() = ^void(){
  NSLog(@"oh is this going to work");
};

NSOperationQueue *myOQ=[[NSOperationQueue alloc] init];

[myOQ addOperation:jt];
[myOQ addOperation:cl];

后一种形式可能吗?我可以将 block 转换为 NSOperation 吗?

提前谢谢

最佳答案

你可以:

NSBlockOperation *jtOperation = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"here is something for jt");
}];

NSBlockOperation *clOperation = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"oh is this going to work");
}];

[myOQ addOperation:jtOperation];
[myOQ addOperation:clOperation];

话虽如此,我通常会执行 addOperationWithBlock 除非出于某些其他原因(例如建立操作之间的依赖关系等)我真的需要 NSOperation 对象指针.

关于ios - 有没有办法像这样向 NSOperationQueue 添加 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282621/

相关文章:

ios - 为 NVCC 恢复 Apple Clang 版本

ios - Collection View 在 cell.viewWithTag(100) 上崩溃

ios - 从 bundle 加载 NIB 时出现异常

multithreading - 从后台队列调用时,核心数据 NSManagedObjectContext 保存永远不会返回

cocoa - NSOperation 等待异步 block 执行

html - 如何控制(在所有设备和浏览器上)字符显示为表情符号版本还是文本版本?

objective-c - 从在后台线程上执行的其他方法内部在主线程上执行方法?

mysql - 设置了 key_block_size 的 MyISAM 表

WPF 异步 Task<T> 阻塞 UI

css - { block :tags} + nth-child in &lt;title&gt; tags