什么时候使用runloop 以及 performSelector 具体使用方法
来源:互联网 发布:奥迪工程师编程教程 编辑:程序博客网 时间:2024/06/05 07:56
runloop就不介绍了,度娘都告诉大家了,这里简单说一下什么时间点才使用runloop
首先run loop不需要创建,在线程中只需要调用[NSRunLoop currentRunLoop]就可以得到
如果你:
1. 使用port或是自定义的input source来和其他线程进行通信
2. 在线程(非主线程)中使用timer
3. 使用 performSelector…系列(如performSelectorOnThread, …)
4. 使用线程执行周期性工作
这些时候可以调用runloop
Run loop 是程序主线程基础设施的关键部分。所以,Cocoa 和 Carbon 程序提供了代码运行主程序的循环并自动启动 run loop。如果你使用 xcode 提供的模板创建你的程序,那你永远不需要自己去显 式的调用这些例程。对于辅助线程,你需要判断一个 run loop 是否是必须的。如果是必须的,那么 你要自己配置并启动它。你不需要在任何情况下都去启动一个线程的 run loop。
performSelector这个方法对于初学者可能比较陌生,但是迟早你会遇到这个牛逼的方法,下面说一下关于performSelector都有哪些方法:
1、- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
aSelector:方法名称
arg:参数(该方法有且只有一个参数,无参数可设为nil)
wait:BOOL值 当前线程若为主线程,aSelector立即执行;
当前若为分线程:YES:等待当前线程执行完毕,主线程执行aSelector;NO:aSelector立刻执行;
2、- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay
aSelector:方法名称
arg:参数(该方法有且只有一个参数,无参数可设为nil)
delay:aSelector方法延迟执行,单位(s)注:以上在主线程上执行aSelector方法时,默认使用NSDefaultRunLoopMode模式;
3、performSelector可以访问未声明的方法
- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
Person *person = [[Personalloc]init];
[person performSelector:@selector(eat)];
}
@end
Person.h
@interface Person : NSObject
@end
Person.m
@implementation Person
void eat (idself,SEL sel)
{
NSLog(@"吃饭了");
}
@end另两个方法就不赘述了,方法类似。
- 什么时候使用runloop 以及 performSelector 具体使用方法
- 什么时候使用runloop?
- performSelector使用
- performSelector使用
- performSelector 使用
- IOS RunLoop详解以及API使用
- iOS RunLoop 基本概念以及使用场景
- RunLoop使用
- runloop使用
- RunLoop使用
- iOS 如何使用 NSTimer 以及 runloop 和 NSTimer 的关系
- performSelector等使用总结
- performSelector的原理以及用法
- performSelector的原理以及用法
- performSelector的原理以及用法
- autorelease对象具体什么时候释放?
- NPM的作用以及具体使用
- 浅析什么时候使用以及如何使用匿名内部类
- [LeetCode] 3Sum
- 平台无关性与语言无关性
- myeclipse 8.5 struts2 搭建成功后,相关问题。
- Factorial Trailing Zeroes
- 简单工厂的原理以及一个样例
- 什么时候使用runloop 以及 performSelector 具体使用方法
- HDOJ 1257 最少拦截系统(LIS)
- FireFly开发之路(一)python学习一
- Java Servlet工作原理问答
- 存储过程中根据某输入参数拼接sql
- 在collection view中加入 NavigationController问题
- 宽带错误代码619原因及解决方法
- SQLServer 资源调控器
- 奇怪错误排查