博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS OS X 和 iOS 中的多线程技术-2 (performSelectors)
阅读量:4066 次
发布时间:2019-05-25

本文共 1351 字,大约阅读时间需要 4 分钟。

 //联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄

一、performSelectors(执行选择器)

 

    NSObject 提供了以 performSelector 为前缀的一系列方法。它们可以让用户在指定线程中,或者立即,或者延迟执行某个方法调用。这个方法给了用户实现多线程编程最简单的方法。

下面有一些例子:

 1.在当前线程中执行方法:

   - (void)performSelector:(SEL)aSelector withObject:(id)anArgument

 afterDelay:(NSTimeInterval)delay

 

   - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:

 (NSTimeInterval)delay inModes:(NSArray *)modes

 2.在指定线程中执行方法:

   - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thread

 withObject:(id)arg waitUntilDone:(BOOL)wait

 

   - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thread withObject:

 (id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array

 

 3.在主线程中执行方法:

   - (void)performSelectorOnMainThread: (SEL)selector withObject:(id)argument

 waitUntilDone:(BOOL)wait

 

   - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg

 waitUntilDone:(BOOL)wait modes:(NSArray *)array

 

 

 4.在后台线程中执行方法:

   - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

 

 这一系列方法简单易用,但只提供了有限的几个选择:指定执行的方法(但传入方法的参数数量有限制);指定是在当前线程,还是在主线程,还是在后台线程执行;指定是否需要阻塞当前线程等待结果。

 

 例如,以下代码使得方法 foo: 在一个新的后台线程执行,并传入了 object 参数:

 

 SEL selector = @selector(foo:);

 [self performSelectorInBackground:selector withObject:object];

 以下代码使得 updateUI 方法在主线程内得到执行,并且当前线程会被阻塞,直到主线程执行完该函数:

 

 [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:YES];

谢谢!!!

转载地址:http://gqtji.baihongyu.com/

你可能感兴趣的文章
struts2 使用注解、反射、拦截器实现基于方法的权限控制
查看>>
maven 架设 struts2 注解方式 权限控制
查看>>
struts2之多个文件上传
查看>>
struts2之单个文件上传
查看>>
struts2自定义拦截器 模拟session超时的处理
查看>>
面试技巧
查看>>
struts2之防止表单重复提交
查看>>
人不成熟的几大特征
查看>>
《礼仪73》、《处事22计》、《心态24条》、《伤心50句》、《学会长大20》
查看>>
人人都会变老
查看>>
oracle connect by用法
查看>>
Oracle 树操作(select…start with…connect by…prior)
查看>>
maven struts2中,使用ModelDriven
查看>>
通过web.xml传递初始参数
查看>>
过滤器与拦截器
查看>>
maven 下成功搭建hibernate
查看>>
maven hibernate 实现对mysql简单的CRUD操作
查看>>
Java 线程池学习
查看>>
j2ee中的listener、 filter、servlet 加载顺序及其详解
查看>>
j2ee中web.xml中配置listener
查看>>