小工具      在线工具  汉语词典  css  js  c++  java

ios自定义NSOperation添加到NSOperationQueue中,系统自动执行start方法

IOS系统方法&&常用控件&&GitHub资源学习 额外说明

收录于:93天前

1. 创建3个任务并将其添加到队列中执行。

- (void)createOperationQueue
{
    //创建一个队列
    NSOperationQueue *queue = [[NSOperationQueue alloc]init];
    
    //创建一个任务
    LJOperation *op1 = [[LJOperation alloc]init];
    op1.nameStr = @"op1";
    
    LJOperation *op2 = [[LJOperation alloc]init];
     op2.nameStr = @"op2";
    
    LJOperation *op3 = [[LJOperation alloc]init];
     op3.nameStr = @"op3";
    
    NSLog(@"block----%@",[NSThread currentThread]);
    
    //把任务添加到队列当中去,相当于调用了任务的start方法
    //倘若我们希望LJOperation执行某种方法,只需要重写start方法就可以,(系统会自动去调start方法)
    [queue addOperation:op1];
    [queue addOperation:op2];
    [queue addOperation:op3];
}


查看控制台打印的结果;

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393020] __FUNCTION__start_op1

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393051] __FUNCTION__start_op3

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393022] __FUNCTION__start_op2


从上面的结果可以看出,先执行op1,然后执行op3,最后执行op2。这不是按顺序执行的。

这是为什么了?因为当我们把operation添加到队列中去后,就相当于把操作被交给系统,系统决定它们的执行顺序。


上面自定义的 国民服役行动

@interface LJOperation : NSOperation

//随便传入一个名字,作为Operation区分用
@property(nonatomic,copy)NSString *nameStr;

@end

#import "LJOperation.h"

@implementation LJOperation

//重写NSOperation的start方法,在此处写下你想执行的方法代码
- (void)start
{
    //do something
    NSLog(@"%s",__FUNCTION__);
    NSLog(@"__FUNCTION__start_%@",self.nameStr);
}


- (void)main
{
   NSLog(@"%s",__FUNCTION__);
  // NSLog(@"__FUNCTION__main_%@",self.nameStr);
}


. . .

相关推荐

额外说明

HTML 编码、HTML 解码

Java中可以使用 escapeHtml4编码,unescapeHtml4解码。 StringEscapeUtils.escapeHtml4();//HTML编码 StringEscapeUtils.unescapeHtml4();//HTML解码 完整

额外说明

rabbitmq学习-centos7卸载删除rabbitmq和erlang

一、卸载rabbitmq --卸载 --停止服务 rabbitmqctl app_stop yum list | grep rabbitmq yum -y remove rabbitmq-server.noarch 二、删除erlang yum lis

额外说明

Invalid bound statement (not found): com.XXX

2023-05-17 18:15:58.364 ERROR 9476 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servl

额外说明

C#——如何在派生类中引发基类事件

C#——如何在派生类中引发基类事件 下面的简单示例演示用于在基类中声明事件,以便也可以从派生类引发它们的标准方法。 此模式广泛用于 .NET 类库中的 Windows 窗体类。 创建可以用作其他类的基类的类时,应考虑到以下事实:事件是特殊类型的委托,只能

额外说明

29.保姆级教程带你做一个属于自己的博客网站

功能介绍: 页面 功能 主页index.html 展示添加博客和博客列表的文字,实现页面跳转 添加页add.html 输入文章标题及内容,并将内容提交到数据库中 列表页list.html 将数据库中所有博客展示到前端页面中,点击文章可以查看文章的详情,附

额外说明

【Unity3D日常开发】AddComponentMenu添加菜单命令

推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 一、前言 今天分享,如何添加自定义菜单栏,效果如下图所示。 第一种,在Component组件菜单下面: 第二种,添加到编辑器的菜单

额外说明

java 拼音搜索功能设计与实现

前言 在搜索场景中,有下面这种需求,即搜索用户的中文拼音,简拼或全拼,甚至拼音的前几位字母时,能够快速检索出来,如下所示 我们希望得到下面这种效果 这就是一个典型的利用拼音检索功能实现对用户数据搜索的业务,这个看起来简单但实用的功能如何实现呢? 实现思路

额外说明

【Java 进阶篇】HTML 图片标签详解

HTML(超文本标记语言)是构建Web页面的标准语言,它包含了许多标签,用于定义和排列页面内容。在Web开发中,显示图像是非常常见的需求之一,为此HTML提供了<img>标签来插入图像。本文将详细介绍HTML图片标签,包括如何插入图像、设置图像属性以及一

额外说明

【云原生】SpringCloud系列之服务调用OpenFeign(日志配置、异常解码器、更改负载均衡策略、替换默认通信组件等)

文章目录 OpenFeign可配置事项 日志配置 异常解码器 拦截器 更改 OpenFeign 默认的负载均衡策略 开启默认的 OpenFeign 数据压缩功能 替换默认通信组件 OpenFeign可配置事项 日志配置 当 API 调用失败后,需要有详细

额外说明

Linux【其他 01】修改登录提示语+Banner在线生成工具链接分享

ASCII文字、Spring Boot自定义启动Banner 在线生成 我用的简单英文如下,翻译是【何需等待 逐梦当下】感觉翻译的平平无奇还不如【时不我待 只争朝夕】~ Last login: Mon Aug 30 09:15:33 2021 from

ads via 小工具