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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 风格迁移综述

    风格迁移综述风格迁移综述 0 引言 1 基于图像迭代的风格迁移方法 1 1 基于最大均值差异的风格迁移 1 2 基于马尔科夫随机场的风格迁移 限制条件较多 有时视觉效果不是很好 1 3 基于深度图像类比的风格迁移 2 基于模型迭代的风格迁移算法 2 1 基于生成模型的风格迁移 2 2 基于图像重构解码器的风格迁移 3 应用举例 4 未来研究方向 5 参考文献推荐论文 Y Jing Y Yang Z Feng J Ye Y YuandM Song NeuralStyleT AReview

    2025年12月8日
    2
  • deb 安装_Ubuntu下安装软件的几种方法

    deb 安装_Ubuntu下安装软件的几种方法1,使用UbuntuSoftware进行软件安装打开UbuntuSoftware应用程序,查找要安装的软件并进行安装,方法与使用软件管家在Windows下安装软件的过程一致。2,使用APT(软件包管理系统)进行软件安装apt是一款安装包管理工具,在Ubuntu下,我们可以使用apt命令进行软件包的安装、删除等操作。例如使用apt-get安装git软件,打开终端,输入sudoapt-…

    2022年5月31日
    37
  • Scrapy 爬虫框架[通俗易懂]

    Scrapy 爬虫框架[通俗易懂]Scrapy爬虫框架1.概述​ Scrapy是一个可以爬取网站数据,为了提取结构性数据而编写的开源框架。Scrapy的用途非常广泛,不仅可以应用到网络爬虫中,还可以用于数据挖掘、数据监测以及自动化测试等。Scrapy是基于Twisted的异步处理框架,架构清晰、可扩展性强,可以灵活完成各种需求。​ 在Scrapy的工作流程中主要包括以下几个部分:​ §ScrapyEngine(框架的引擎):用于处理整个系统的数据流,触发各种事件,是整个框架的核心。​ §Scheduler(调度器

    2025年7月12日
    3
  • 免费sun.misc.BASE64Decoder.jar下载「建议收藏」

    免费sun.misc.BASE64Decoder.jar下载「建议收藏」相信很多人在转base64时,需要BASE64Decoder包,然而网上都需要C币或者某豆,本着开源思想,资源共享原则,分享链接如下,大家可以自行下载:https://pan.baidu.com/s/127YeW2y_j1NNyrE3w70Ztg,此链接永久有效!!!如有疑问,请联系zhang_quan_888@163.com….

    2022年7月16日
    15
  • R-CNN算法_贝叶斯R语言

    R-CNN算法_贝叶斯R语言**R-CNN算法优化策略**1,两阶段检测的进阶模型首先进行数据处理,然后输入backbone得到特征图,然后进入RPN中提取候选区域roi,然后再ROIAlign提取特争,然后送入BBoxHead进行进一步的回归和分类。主要介绍方面第一步主要解决多尺度问题,预测物体大小第二部算是fastRNN的局部表示图主要用最后一层对下一步进行输入。第三步卷积神经网络存在下采样,在不同深度存在不同特征,第四步fpn将不同层的特征相互融合,将特征展现得更加全面。骨干网络和fpn相对独立,

    2025年10月1日
    2
  • int8_t、int16_t、int32_t转换[通俗易懂]

    int8_t、int16_t、int32_t转换[通俗易懂]int8_t、int16_t、int32_t转换

    2022年8月15日
    6

发表回复

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

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