您的位置:首页 > 产品设计 > UI/UE

iOS 【UIKit-performSelector】

2015-09-28 12:00 513 查看
在项目中,常常用到performSelectorXXX之类的方法,而且有很多类似方法;今天就来召集一下!

1.performSelectorOnMainThread:withObject:waitUntilDone:
-(void)performSelectorOnMainThread:(SEL)aSelectorwithObject:(id)argwaitUntilDone:(BOOL)wait

在主线程上执行指定的方法,使用默认的模式(NSDefaultRunLoopMode)。
默认的模式指:主线程中的方法进行排队,是一个循环队列,并且循环执行。
参数:
aSelector:要在主线程执行的方法,该方法不能有返回值,并且只能有一个参数。

arg:要传递的参数,如果无参数,就设为nil

wait:要执行的aSelector方法,是否马上执行。
如果设置为YES:等待当前线程执行完以后,主线程才会执行aSelector方法;
设置为NO:不等待当前线程执行完,就在主线程上执行aSelector方法。
如果,当前线程就是主线程,那么aSelector方法会马上执行。

该方法用途:因为iPhone编程,对UI的修改,只能在主线程上执行。可以用该方法来完成UI的修改。

2.performSelector:withObject:afterDelay:
-(void)performSelector:(SEL)aSelectorwithObject:(id)anArgumentafterDelay:(NSTimeInterval)delay

在当前线程中执行指定的方法,使用默认模式,并指定延迟。
参数:
aSelector:指定的方法。含义同上,不在赘述。

anArgument:同上
delay:指定延迟时间(秒)。

3.performSelector

我们常常用到以下3个方法,分别为:


- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;

首先,定义要调用的方法


-(void)methodNoParam{

NSLog(@"methodNoParam");
}

-(void)methodWithOneParam:(id)paramFirst{

NSLog(@"methodWithOneParam: %@", paramFirst);

}

-(void)methodWithParams:(id)paramFirst andParamSecond:(id) paramSecond{
NSLog(@"methodWithOneParam: %@,%@",paramFirst,paramSecond);

}

其次,进行调用

//没有参数

BOOL isNoParam= [self.selfViewControllerDelegate
respondsToSelector:@selector(methodNoParam)];

if (isNoParam) {
[self.selfViewControllerDelegate
performSelector:@selector(methodNoParam)];
}


//
一个参数

BOOL isOneParam= [self.selfViewControllerDelegate
respondsToSelector:@selector(methodWithOneParam:)];

if (isOneParam) {
[self.selfViewControllerDelegate
performSelector:@selector(methodWithOneParam:)
withObject:@"firsht"];
}


//
二个参数

BOOL isParams= [self.selfViewControllerDelegate
respondsToSelector:@selector(methodWithParams:andParamSecond:)];

if (isParams) {
[self.selfViewControllerDelegate
performSelector:@selector(methodWithParams:andParamSecond:)
withObject:@"first"
withObject:@"second"];
}

转载自:http://blog.sina.com.cn/zhenwawaer
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: