前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >block与GCD--42:多用GCD,少用performSelector系列方法

block与GCD--42:多用GCD,少用performSelector系列方法

作者头像
xy_ss
发布2023-11-22 08:30:49
1160
发布2023-11-22 08:30:49
举报
文章被收录于专栏:浮躁的喧嚣

performSelector系列方法

  • 编译器并不知道将要执行的选择器是什么,也不知道该选择器是否有返回值,所以没有办法运用ARC的内存管理规则判断返回值是不是应该释放
  • 这些方法的返回值只能是void或者对象类型(id)
  • 使用起来传入参数有限
代码语言:javascript
复制
- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

GCD与performSelector方法对比(尽可能使用GCD)

  • 延时
代码语言:javascript
复制
//performSelector
[NSObject performSelector:@selector(dosomething) withObject:nil afterDelay:0.5];

//GCD
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self dosomething];
});
  • 主线程执行任务
代码语言:javascript
复制
//performSelector
[NSObject performSelectorOnMainThread:@selector(dosomething) withObject:nil waitUntilDone:NO];
    
//GCD
dispatch_async(dispatch_get_main_queue(), ^{
        [self dosomething];
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • performSelector系列方法
  • GCD与performSelector方法对比(尽可能使用GCD)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档