首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用performSelector:withObject:afterDelay:使用非对象参数

使用performSelector:withObject:afterDelay:方法可以实现在一定延迟时间后执行某个方法,但是这个方法只能接受对象类型的参数。如果需要传递非对象类型的参数,可以通过以下方法实现:

  1. 将非对象类型的参数封装成对象类型的参数,例如将基本数据类型封装成NSNumber对象,将C字符串封装成NSString对象等。
  2. 使用block来实现延迟执行,例如使用GCD(Grand Central Dispatch)中的dispatch_after函数,可以在指定的时间后执行某个block,同时可以在block中传递任意类型的参数。

例如,使用dispatch_after函数实现延迟执行一个方法myMethod,并传递一个整数参数42

代码语言:txt
复制
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来实现延迟执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券