什么时候使用runloop 以及 performSelector 具体使用方法

原创 2015年11月20日 15:38:57

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

另两个方法就不赘述了,方法类似。


@end
@end
@end
@end
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

runloop 与autorelase对象、Autorelease Pool 在什么时候释放

转载自:http://blog.csdn.net/leikezhu1981/article/details/51246684iOS的运行时是由一个一个runloop组成的,每个runloop都会执行下...

PHP会话Session的具体使用方法解析

PHP会话Session的御用比起Cookie来说相对要更安全一些,而且没有数据长度的限制  。我们今天就向大家介绍有关PHP会话Session一些相关知识,以加深民大家对PHP会话Session的认...

NC瑞士军刀的具体使用方法

nc的使用方法 netcat被誉为网络安全界的‘瑞士军刀’,相信没有什么人不认识它吧...... 一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定的后门工具...

phylip的具体使用方法

phylip的具体使用方法

Matlab caffe 具体使用方法

Matlab caffe 具体使用方法 caffe 的matlab接口网络上的资料比较少,这里把几个基本的操作简单介绍,主要包括:classification_demo的简单介绍 卷积核的显示 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)