使用performSelector:withObject:afterDelay:
方法可以实现在一定延迟时间后执行某个方法,但是这个方法只能接受对象类型的参数。如果需要传递非对象类型的参数,可以通过以下方法实现:
dispatch_after
函数,可以在指定的时间后执行某个block,同时可以在block中传递任意类型的参数。例如,使用dispatch_after
函数实现延迟执行一个方法myMethod
,并传递一个整数参数42
:
int delayInSeconds = 2.0;
int myParam = 42;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self myMethod:myParam];
});
在上面的代码中,dispatch_after
函数的第一个参数是指定执行的时间,第二个参数是指定执行的队列,第三个参数是要执行的block。在block中可以传递任意类型的参数,这里传递了一个整数参数myParam
。
总之,使用performSelector:withObject:afterDelay:
方法可以实现在一定延迟时间后执行某个方法,但是这个方法只能接受对象类型的参数。如果需要传递非对象类型的参数,可以通过将非对象类型的参数封装成对象类型的参数,或者使用block来实现延迟执行。
领取专属 10元无门槛券
手把手带您无忧上云