首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS -运行线程ios选择器的位置

iOS是苹果公司开发的移动操作系统,用于iPhone、iPad和iPod Touch等设备。在iOS中,线程是用来执行并发任务的基本单位。iOS提供了多种方式来管理和控制线程的执行,其中最常用的是使用GCD(Grand Central Dispatch)和NSOperationQueue。

GCD是一种基于队列的并发编程模型,它使用了任务和队列的概念来管理线程的执行。GCD提供了多种类型的队列,包括串行队列和并发队列。串行队列按照任务的添加顺序依次执行,而并发队列可以同时执行多个任务。开发者可以根据实际需求选择适合的队列类型来执行任务。

NSOperationQueue是基于GCD的高级抽象,它使用了NSOperation和NSOperationQueue来管理线程的执行。NSOperation是一个抽象类,开发者可以继承它并实现自定义的操作。NSOperationQueue则负责管理和调度这些操作的执行。

在iOS中,选择器(Selector)是一种用于动态调用方法的机制。选择器可以指定一个方法的名称,并在运行时通过选择器来调用该方法。选择器常用于事件处理、定时器和多线程编程等场景。

在使用GCD或NSOperationQueue执行线程时,可以使用选择器来指定要执行的方法。例如,可以通过选择器来指定一个任务的入口方法,然后将该任务添加到队列中执行。

iOS中选择器的位置可以是任何一个线程中,具体取决于开发者的需求和设计。选择器可以在主线程中执行,也可以在后台线程中执行。在主线程中执行选择器可以更新UI界面,而在后台线程中执行选择器可以执行一些耗时的操作,避免阻塞主线程。

总结起来,iOS中运行线程选择器的位置可以根据具体需求选择在主线程或后台线程中执行。选择器可以通过GCD或NSOperationQueue来调度执行,具体选择哪种方式取决于开发者的偏好和项目需求。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS线程

进程是指系统中正在运行一个应用程序。每个进程之间是独立,每个进程均运行在其专用且受保护内存空间内。 比如同时打开QQ、Xcode,系统就会分别启动 2 个进程。...六、多线程优缺点 优点: 能适当提高程序执行效率 能适当提高资源利用率(CPU、内存利用率) 缺点: 创建线程是有开销iOS下主要成本包括:内核数据结构(大约 1 KB)、栈空间(子线程 512...如果开启大量线程,会降低程序性能 线程越多,CPU 在调度线程开销越大 *程序设计更加复杂:比如线程之间通信,多线程数据共享。...七、多线程iOS 开发中应用 主线程:一个 iOS 程序运行后,默认会开启一条线程,称为『主线程』或『UI 线程』。...主线程使用注意: 别将比较耗时操作放到主线程中 耗时操作会卡住主线程,严重影响 UI 流畅度,给用户一种『卡』坏体验。 八、iOS中多线程实现方案 ? 实现方案

65730

iOS线程同步

iOS开发基础.png 线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作。...线程同步目的为了多个线程都能很好工作,合理访问系统资源不争不抢、和谐共处。...iOS开发中常用保持线程同步有以下几种: 通过线程加锁 串行队列 GCD 线程加锁 常用几种形式锁 1、 @synchronized - (void)myMethod:(id)anObj {...通过对一段代码使用进行加锁。其他试图执行该段代码线程都会被阻塞,直到加锁线程退出执行该段被保护代码段。...当在@synchronized()代码块中抛出异常时候,Objective-C运行时会捕获到该异常,并释放信号量,并把该异常重新抛出给下一个异常处理者。

98820

「WebRTC」iOS运行AppRTCMobile

前言 最近在看 iOS 下WebRTC代码。想在真机上跑一下它 Demo 程序 AppRTCMobile 看看是什么效果。但在编译并布署到真机上遇到了各种问题。...想要成功编译出AppRTCMobile这个Demo程序并在真机上运行,必须要有开发者帐号。帐号分为个人,公司,企业三种类型,这三种都是可以,但需要注意两点: 1....虽然WebRTC能够创建iOS工程文件,但Xcode无法按自己规则编译WebRTC及其 Demo 程序,它必须通过脚本调用ninja进行编译。...target_os="ios": 目标操作系统是 iOS。 target_cpu="arm64": CPU架构是 64 位。...修改 Info.plist 光做以上修改还是不能编译出可以在真机上运行 AppRTCMobile 程序。还有一件关键事我们还没做,那就是要修改两个 Info.plist 文件。

2.8K10

iOS线程总结

了解多线程,首先我们需要了解以下知识 进程 ●进程是指在系统中正在运行一个应用程序,就是一段程序执行过程,我们可以理解为手机上一个app。...●每个进程之间是独立,每个进程均运行在其专用且受保护内存空间内,拥有独立运行所需全部资源。 线程 ●程序执行流最小单元,线程是进程中一个实体....●一个进程要想执行任务,必须至少有一条线程.应用程序启动时候,系统会默认开启一条线程,也就是主线程 任务 任务就是执行操作意思,也就是在线程中执行那段代码。...可以在新线程中执行任务,具备开启新线程能力。...03.722091+0800 TestDemo[56896:6617112] 任务C thread:{number = 3, name = 任务C} iOS

74050

iOS线程编程

一、基础概念 进程: 狭义定义:进程是正在运行程序实例(an instance of a computer program that is being executed)。...广义定义:进程是一个具有一定独立功能程序关于某个数据集合一次运行活动。它是操作系统动态执行基本单元,在传统操作系统中,进程既是基本分配单元,也是基本执行单元。...OS X和iOS核心XNU内核在发生操作系统事件时(如每隔一定时间,唤起系统调用等情况)会切换执行路径。...,就会消耗大量内存问题,引起大量上下文切换,大幅度降低系统响应性能 并行队列(Concurrent Dispatch Queue): iOS和OS X核心--XNU内核决定应当使用线程数,并只生成所需线程执行处理...为了说明线程分配原理,这里假设线程数为4,实测iOS11线程数可达20个,所以想测试同学,在并发队列中必须追加20个以上任务      对于Concurrent Dispatch Queue来说,不管生成多少

87460

iOS线程 - Operation

我们之前已经讲过 iOS线程-Thread 以及 iOS线程-GCD,我们今天来聊一聊 iOS线程中最后一种比较常用方式--Operation。...其实 NSOpertion 是先于GCD引进,在当时,NSOperationQueue 接收 NSOperation 对象并创建一个线程,然后在该线程运行 main方法 ,运行完成之后再杀死该线程。...这种方式相对于后面出现GCD底层线程池而言,效率就很低,所以在 Mac OS 10.5 以及 iOS 2 开始便对NSOpertion底层在基于GCD基础上进行完全重写,利用GCD相关特性提高性能并提供了一些新功能...从上面 Operation 几个状态属性我们可以知道 Operation 在程序运行过程中状态会进行相应流转,其状态图如下所示。...这部分内容,Apple 文档上有详细介绍,Operation 文档链接[2] 除了将Operation放入OperationQueue运行这种方式之外,还可以直接调用start方法进行运行

92730

iOS线程编程

一、基础概念 进程: 狭义定义:进程是正在运行程序实例(an instance of a computer program that is being executed)。...广义定义:进程是一个具有一定独立功能程序关于某个数据集合一次运行活动。它是操作系统动态执行基本单元,在传统操作系统中,进程既是基本分配单元,也是基本执行单元。...OS X和iOS核心XNU内核在发生操作系统事件时(如每隔一定时间,唤起系统调用等情况)会切换执行路径。...,就会消耗大量内存问题,引起大量上下文切换,大幅度降低系统响应性能 并行队列(Concurrent Dispatch Queue): iOS和OS X核心--XNU内核决定应当使用线程数,并只生成所需线程执行处理...为了说明线程分配原理,这里假设线程数为4,实测iOS11线程数可达20个,所以想测试同学,在并发队列中必须追加20个以上任务      对于Concurrent Dispatch Queue来说,不管生成多少

57030

iOS线程 - GCD

一、GCD 优势 GCD 是苹果公司为多核并行运算提出解决方案 GCD 会自动利用更多 CPU 内核(比如双核,四核)* GCD 会自动管理线程生命周期(创建线程,调度任务,销毁线程) 程序只需要告诉...,不具备开启新线程能力 异步:可以在新线程中执行任务,具备开启新线程能力 四、队列类型 GCD 队列可以分为 2 大类型 并发队列(Concurrent Dispatch Queue) 可以让多个任务并发...,再执行下一个任务) 五、容易混淆术语 同步和异步主要影响:能不能开启新线程 同步:只是在当前线程中执行任务,不具备开启新线程能力 异步:可以在新线程中执行任务,具备开启新线程能力 并发和串行主要影响..., dispatch_block_t block); //在前面任务执行结束后它才执行,而且它后面的任务等它执行完成之后才会执行 2.延时执行 iOS 常见延时执行 调用 NSObject 方法 [...单例模式作用 1.可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问 2.从而方便地控制了实例个数,并节约系统资源 *单例模式使用场合 在整个应用程序中,共享一份资源(这份资源只需要创建初始化

68420

iOS线程--NSThread

线程状态 四、控制线程状态 启动线程 -(void)start; //进入就绪状态 -> 运行状态。...互斥锁 首先线程 A 给变量加锁,然后读取值,这样别的线程就不能访问了,直到线程 A 做完了相应操作,然后把值再写入到变量中,之后再给变量解锁;然后线程 B 给变量加锁,再读取变量值,然后对读取值进行相应操作...缺点:需要消耗大量 CPU 资源 3.互斥锁使用前提:多条线程抢夺同一块资源 4.相关专业术语:线程同步 线程同步意思是:多条线程在同一条线上执行(按顺序地执行任务) 互斥锁,就是使用了线程同步技术...非原子属性,不会为 setter 方法加锁 2.原子和非原子属性选择: atomic:线程安全,需要消耗大量资源 nonatomic:非线程安全,适合内存小移动设备 iOS开发建议 所有属性都声明为...nonatomic 尽量避免多线程抢夺同一资源 尽量将加锁,资源抢夺业务逻辑交给服务器端处理,减少移动客户端压力 七、线程通信 1.什么叫做线程间通信?

41620

IOS-多线程

一·什么是线程,进程 打开我们管理控制器 QQ截图20201214000219.png 二·五大区 栈 局部变量&调用的上下文 (自动管理,可读可写,不可执行) 函数参数:id,self,sel,...imp 堆 new&malloc (手动管理,可读可写,不可执行) 开辟空间alloc,并且赋予一个地址指针,方便管理,通过链表结构(方便增删,不便查找)所以通过类似数组形式,给开辟空间一个指针地址...,由栈->指针地址才能找到该存在于堆区内存空间....2.callRunsPolicy任务回调到使用者 3.DisOldestPolicy丢弃等待最久任务 4.DiscardPolicy直接放弃 六·线程优先级(QualityofService) 6.1priority...资源抢夺 当我们讨论线程安全,问题都会归于一个问题上:在I/O操作中,在线程线程之间会发生资源抢夺 应对方法:1.加锁 synchronized 互斥锁:进入runable状态,等待唤醒 自旋锁:一直访问

69650

iOS线程 - NSOperation

NSOperation 和 NSOperationQueue 实现多线程具体步骤 先将需要执行操作封装到一个 NSOpertion 对象中 然后将 NSOperation 对象添加到 NSOperationQueue...中 系统会自动将 NSOperationQueue 中 NSOperation 取出来 将取出 NSOperation 封装操作放到一条新线程中执行 二、NSOperation 子类 NSOperation...方法 注意: 默认情况下,调用了 start 方法后并不会开一条新线程去执行操作,而是在当前线程同步执行操作 只有将 NSOperation 放到一个 NSOperationQueue 中,才会异步执行操作...同时执行任务数,比如,同时开 3 个线程执行 3 个任务,并发数就是 3 最大并发数相关方法 -(NSInteger)maxConcurrentOperationCount; -(void)setMaxConcurrentOperationCount...)main 方法,里面实现想执行任务 重写 -(void)main 方法注意点 自己创建自动释放池(因为如果是异步操作,无法访问主线程自动释放池) 经常通过 -(void)isCancelled

38910

iOS线程-Thread

类方法创建线程自动运行,通过这种方式我们无法对 Thread 属性进行一些自定义设置,如name、threadPriority等。...@available(iOS 10.0, *) public convenience init(block: @escaping () -> Void) 实例方法创建线程需要手动调用 start 方法才能运行...就绪:将线程对象添加到可调度线程池,等待 CPU 调用; 运行:CPU 从可调度线程池中选中线程进行调用,当前选中线程运行状态,未选中重新变为就绪状态,此步程序员无法控制,由系统来处理; 堵塞:线程休眠处理...实质上是放进了可调度线程池,等待被 CPU 调用。线程执行结束之前,状态可能会在就绪状态 和 运行状态 之间来回切换。就绪状态 和 运行状态 之间状态切换由 CPU 来完成, 程序员无法干涉。...cancel 并没有真正取消线程,只是打了一个标志(通过 isCancelled 方法可以获取到)。一般我们需要在进行大量操作前判断一下标志,避免线程已经被取消了,还运行一些计算现象产生。

89920

iOS线程-GCD

对开发者而言,面对不再是上一篇文章iOS线程-Thread所描述线程,CGD 将线程概念模糊掉,开发者转而面对是更上层队列和任务,不再需要考虑线程周期以及调度等等,这些交由 GCD 内部处理就好...attributes 包含两个属性 concurrent:标识队列为并行队列 initiallyInactive:标识运行队列中任务需要动手触发(未添加此标识时,向队列中添加任务会自动运行),触发时通过...GCD层次图 qos 属性扩展 如果大家对上次iOS线程-Thread还有印象的话,想必会对ThreadqualityOfService属性有点印象,其类型为QualityOfService;iOS...主队列 let mainQueue = DispatchQueue.main 主队列,是一个特殊串行队列,其永远运行在主线程中,它主要处理 UI 相关任务,也可以处理其他类型任务。...同时需要注意一下主队列与主线程之间区别。主队列一定是运行在主线程中,但是主线程却不只运行主队列,还可以运行其他队列。

78930

iOS 应用使用位置信息

iOS 应用使用位置信息 最近要在 iOS 应用中添加位置信息, 需要满足需求如下: 应用在前台时能够获取位置信息; 通过切换、 Home 按键将应用切换到后台时,停止获取位置信息; 应用程序在前台运行...获取设备位置信息 在 iOS 上获取位置信息是很容易, 网上资料也很多, 我代码如下: // make sure location service is enabled. if (!...locationManager.UpdatedLocation += OnLocationUpdated; } locationManager.StartUpdatingLocation(); 第一次运行时..., 系统会弹出应用要使用位置对话框, 点击确认即可。...在锁屏情况下继续更新 GPS 信息 当程序运行时, 用户直接锁定屏幕, 会调用 AppDelegate DidEnterBackground 方法, 但是对于 iOS 应用来说, 用户切换程序或者点击

73510

iOS开发之城市选择器

城市选择器,借助于UIPickerView来实现,第一列为省份,第二列为第一列省份对应城市或者区,数据放在plist中,plist结构如下图所示,第一层是一个Dictionary,每个省份对应城市是一个...plist.png 实现步骤 第一步 拖入一个UIPickerView到StoryBoard中,然后设置UIPickerViewDelegate,和UIPickerViewDataSource为当前控制器...设置数据源与代理.png 第二步 在对应ViewController中进行实现,代码注释非常详细 #import "ViewController.h" @interface ViewController...*/ - (NSArray*)provinces { if (_provinces == nil) { //将省份保存到数组中 但是字典保存是无序 所以读出来省份也是无序...城市选择器.gif 附件 plist文件下载地址:http://pan.baidu.com/s/1dETRthZ

2K80
领券