performSelector的方法[通俗易懂]

performSelector的方法[通俗易懂]在此我对performSelector系列方法进行了总结1、-(id)performSelector:(SEL)aSelector;-(id)performSelector:(SEL)aSe

大家好,又见面了,我是你们的朋友全栈君。

在此我对performSelector系列方法进行了总结

1、

– (id)performSelector:(SEL)aSelector;

– (id)performSelector:(SEL)aSelector withObject:(id)object;

– (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;

这三个方法都是同步执行,与线程无关,在需要动态的去调用方法的时候去使用。

例如:

[self performSelector:@selector(configUI)]; 与[self configUI]; 效果完全相同。

withObject:(id)object 这是要传递的参数

2、

– (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray<NSString *> *)modes;

– (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;

  这两个方法为异步执行,只能在主线程中执行。可用于点击UI中一个按钮会触发一个消耗性能的事件,在事件执行期间按钮会一直处于高亮状态,此时可以调用该方法去异步的处理该事件,避免上述问题。

在方法未到执行时间之前,取消方法为:

+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument;

+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;

调用该方法之前或在该方法所在的viewController生命周期结束的时候去调用取消函数,以确保不会引起内存泄露。

3、

– (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait modes:(nullable NSArray<NSString *> *)array;

– (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;

这两个方法,在主线程和子线程中均可执行,均会调用主线程的aSelector方法

如果设置wait为YES:等待当前线程执行完以后,主线程才会执行aSelector方法;

设置为NO:不等待当前线程执行完,就在主线程上执行aSelector方法。

如果,当前线程就是主线程,那么aSelector方法会马上执行。

注意:apple不允许程序员在主线程以外的线程中对ui进行操作,此时我们必须调用performSelectorOnMainThread函数在主线程中完成UI的更新

4、 

– (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait modes:(nullable NSArray<NSString *> *)array NS_AVAILABLE(10_5, 2_0);

– (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait NS_AVAILABLE(10_5, 2_0);

在我们指定的线程中调用方法。

5、

– (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable id)arg NS_AVAILABLE(10_5, 2_0);

后台执行

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154611.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spss实现单因素方差分析怎么做_双因素方差分析例题

    spss实现单因素方差分析怎么做_双因素方差分析例题总目录:SPSS学习整理SPSS实现单因素方差分析目的适用情景数据处理SPSS操作SPSS输出结果分析知识点目的检验单因素水平下的一个或多个独立因变量均值是否存在显著性差异,即检验单因素各个水平的均值是否来自同一个总体。(因变量为连续变量)适用情景方差分析前提:各个总体服从正态分布各个总体方差相等观测值独立数据处理SPSS操作SPSS输出结果分析基本信息基于平均值显著性为0.729,大于0.05,认为各组总体方差相等F=8.744,显著性为0.007,小于0.

    2022年10月19日
    3
  • linux 误删文件恢复_centos删除的文件能恢复吗

    linux 误删文件恢复_centos删除的文件能恢复吗本文参考http://write.blog.csdn.net/postedit?ticket=ST-491405-OGjDDusZeyMgVQ7bHW7f-passport.csdn.net前言作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过……

    2022年8月21日
    8
  • origin图上的字母C怎么消除_origin画图为什么总是有C

    origin图上的字母C怎么消除_origin画图为什么总是有C有C是由于在进行激活成功教程版安装导致的,激活了官方的反盗版机制,会给你的图打一个copyright,也就是C,以下方法可破:将文件保存为项目文件,opju后缀的关闭origin然后再打开,C就没有了

    2022年9月21日
    9
  • linux curl命令详解_curl详解

    linux curl命令详解_curl详解curl(CommandLineUniformResourceLocator),即在命令行中利用URL进行数据或者文件传输。https://curl.haxx.se/这是curl的官网。可以从上面的官网地址下载最新的curl版本。同时可以在官网看出curl支持的各种协议(如HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S等)、使用途径、…

    2025年8月13日
    3
  • 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    微信开放平台开发——网页微信扫码登录(OAuth2.0)

    2021年10月27日
    41
  • 云原生分布式数据库PolarDB_polardb数据库

    云原生分布式数据库PolarDB_polardb数据库原生数据库PolarDB和云原生数据仓库AnalyticDB的优势在哪里?李飞飞,现任阿里巴巴集团副总裁、高级研究员,阿里云智能数据库事业部总负责人。美国计算机协会ACM杰出科学家,加入阿里巴巴之前为美国犹他大学计算机系终身教授。研究成果多次获得了IEEEICDE、ACMSIGMOD最佳论文奖等重要学术奖项。他也是中国计算机协会CCF大数据专家委员会副主任、数据库专业委员会常委。————————————————原文链接:https://blog.csdn.net/alitech2017/artic

    2025年11月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号