iOS常见的几种延时执行的方法

1.performSelector

[self performSelector:@selector(delayMethod) withObject:nil/*可传任意类型参数*/ afterDelay:2.0];

注:此方法是一种非阻塞的执行方式,未找到取消执行的方法。

2.NSTimer定时器

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];

注:此方法是一种非阻塞的执行方式,
取消执行方法:- (void)invalidate;即可

3.NSThread线程的sleep

[NSThread sleepForTimeInterval:2.0];

注:此方法是一种阻塞执行方式,建议放在子线程中执行,否则会卡住界面。但有时还是需要阻塞执行,如进入开机启动页(广告展示)需要沉睡2秒才进入主界面时。
没有找到取消执行方式。

4.GCD

__block ViewController/*主控制器*/ *weakSelf = self;
dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0/*延迟执行时间*/ * NSEC_PER_SEC));

dispatch_after(delayTime, dispatch_get_main_queue(), ^{
    [weakSelf delayMethod];
});`

注:此方法可以在参数中选择执行的线程,是一种非阻塞执行方式。没有找到取消执行方式。

时间: 2024-10-17 05:01:09

iOS常见的几种延时执行的方法的相关文章

IOS常见的三种回调方法介绍

认识下三种IOS常见的回调模式. 代理模式作为IOS中最常见的通讯模式,代理几乎无处不在. 这里有一个数组,我们首先通过代理的方式将数组传递到其他方法中去. 设置协议及方法 @protocol CallBackDelegate; @interface ViewController : UIViewController @property (weak, nonatomic) id<CallBackDelegate> delegate; @end @protocol CallBackDelegat

iOS - UITableView中有两种重用Cell的方法

UITableView中有两种重用Cell的方法: iOS代码 - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); 在iOS 6中dequeueReusableCellWith

iOS常见崩溃情况以及bug调试解决方法

本博客会不定期更新,将我在项目中常见的崩溃情况进行整理后分享给大家: 1.unrecognized seletor.错误:这种情况很简单,给一个对象发送了一条它不认识的消息.比如说你的.h中声明了某一个方法,但是.m中却没有实现,而且你没有对异常消息处理(消息转发)就会造成这种现象.解决办法:首先排查自己的某一些方法是否实现,其次看一下哪些对象接收了它不该接收的消息. 2.index 1 beyond NSArraMu [0,0]数组越界:数组越界这个不多说. 3.NSNul length 这个

两种方式执行父类方法

class Base1(object): def func(self): print("Base1.func") class Base2(object): def func(self): print("Base2.func") class Foo(Base1, Base2): def func(self): # 方式一:根据mro的顺序执行方法 super().func() # Base1.func super(Foo,self).func() # Base1.fu

IOS中延时执行的几种方式的比较和汇总

本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.performSelector方法 [self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f]; 此方式要求必须在主线程中执行,否则无效.是一种非阻塞的执行方式,暂时未找到取消执行的方法. 2.定时器:NSTimer [NS

【iOS开发系列】延时执行的几种方式

/* 本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. */ - (void)delayMethod { NSLog(@"execute"); } /** * [1].performSelector方法 */ [self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f]; // 此方式要求必须在主线程中执行,否则无效. // 是一种非阻塞的执行方式, // 暂时未

Android 中延时执行的几种方法

延时执行的方法主要有: 1.开启新线程:2.利用定时器:3.消息处理:4.利用AlarmManager 一.开启新线程 new Thread(new Runnable(){ public void run(){ Thread.sleep(XXXX); handler.sendMessage(); //告诉主线程执行任务 } }).start 二.利用定时器 TimerTask task = new TimerTask(){ public void run(){ //execute the tas

iOS 高效开发-----延时执行用GCD

早期我们使用延时执行的方法都是用NSObject 类提供的,performSelector:系列的方法,具体有哪些我们看一下 我们一般让某个对象延时执行某个方法都会调用包含  afterDelay这个参数的方法,此参数即代表延时多长时间执行 ,但是这一系列的方法的参数都只接受继承自NSObject类得对象,也就是说如果我们要向其中传入基本的数据类型,那就必须涉及到数据类型转换,这显然会增加开销,而且这一系列的方法最多也就能传如一个参数,如果我们要传多个参数怎么办呢 ,如果想继续使用这个方法,那我

iOS:延时执行的三种方式

延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObject (NSDelayedPerforming) ※延时调用在当前线程使用特定模式的方法(如果数组没有数据或者参数为nil,则不会调用selector中方法) - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterD