热点新闻
iOS:延迟执行和取消方法
2023-07-30 01:00  浏览:3842  搜索引擎搜索“手机低淘网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在手机低淘网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

iOS中延迟执行一般有三种方法:performSelector,NSTimer,dispatch_after

一:performSelector

延迟方法:[self performSelector:@selector(startP) withObject:nil afterDelay:3.0];

取消延迟:

方法一:这里需要注意参数需保持一致,否则取消失败

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startP) object:nil];

方法二:可以取消所有的延迟调用

[NSObject cancelPreviousPerformRequestsWithTarget:self ];

可能遇到的问题:cancelPreviousPerformRequestsWithTarget不管用,计时依然执行,这是因为performSelector和cancelPreviousPerformRequestsWithTarget必须在同一个线程中执行才可以

dispatch_async(dispatch_get_main_queue(),^{

    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startP) object:nil];

//或者

//[NSObject cancelPreviousPerformRequestsWithTarget:self ];

});

二:NSTimer

延迟方法:

self.timer=[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(startP) userInfo:nil repeats:NO];

取消方法:[self.timer invalidate];self.timer=nil;

三:dispatch_after

延迟方法:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//主线程

      //要执行的操作//延迟两秒后执行

    });

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_global_queue(), ^{

      //要执行的操作//延迟两秒后执行

    });

暂无取消

四:sleepForTimeInterval

[NSThread sleepForTimeInterval:1];

这个方法会阻塞主线程

发布人:bbb0****    IP:183.195.54.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发