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


相关推荐

  • css学习_css补充知识「建议收藏」

    css学习_css补充知识「建议收藏」css学习_css补充知识

    2022年4月22日
    48
  • 下载和安装R、RStudio !~~~「建议收藏」

    下载和安装R、RStudio !~~~「建议收藏」现如今,R语言是统计领域广泛使用的工具,是属于GNU系统的一个自由、免费、源代码开放的软件,是用于统计计算和统计绘图的优秀工具。而RStudio是R的集成开发环境,用它进行R编程的学习和实践会更加轻松和方便。下面就教大家如何下载并安装R和RStudio,比较简单。R的维护工作由一个国际化的开发者团队负责。R软件的官方下载页面叫作TheComprehensiveRArchiveNetwork

    2022年6月16日
    39
  • vs2017注释快捷键设置_vs注释多行代码快捷键

    vs2017注释快捷键设置_vs注释多行代码快捷键1、首先进入文件夹:C:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Community\Common7\IDE\VC\Snippets\2052\VisualC++2、在该文件夹中创建xxx.snippet文件,编辑内容如下:注:fuc是快捷方式&lt;?xmlversion="1.0"encoding…

    2022年8月15日
    6
  • PetShop4 下载地址

    PetShop4 下载地址http://download.microsoft.com/download/8/0/1/801ff297-aea6-46b9-8e11-810df5df1032/Microsoft%20.NET%20Pet%20Shop%204.0.msi转载于:https://www.cnblogs.com/Juniy/archive/2006/11/07/553351.html

    2022年10月17日
    6
  • 30分钟看懂经济运行原理_看懂了自然哲学原理

    30分钟看懂经济运行原理_看懂了自然哲学原理这部分内容主要解释一些概念和术语,最好是先理解这部分内容。公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。

    2022年8月4日
    9
  • 关于我妈的一切_bool flag=false

    关于我妈的一切_bool flag=falseFLAG_ACTIVITY_MULTIPLE_TASK总结:1、使用改标记,需要自行管理Activity2、需要与FLAG_ACTIVITY_NEW_DOCUMENT或者FLAG_ACTIVITY_NEW_TASK共同使用/***Thisflagisusedtocreateanewtaskandlaunchanactivityinto…

    2022年10月5日
    2

发表回复

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

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