form factor_perform和performance的区别和用法

form factor_perform和performance的区别和用法performSelector:withObject:是在iOS中的一种方法调用方式。他可以向一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以这也是runtime的一种应用方式。performSelector和直接调用方法的区别就在与runtime。直接调用编译是会自动校验。如果方法不存在,那么直接调用在编译时候就能够发现,编译器会直接报错。但是使用performSelec…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

performSelector: withObject:是在iOS中的一种方法调用方式。他可以向一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以这也是runtime的一种应用方式。

1.performSelector与直接调用的区别
performSelector和直接调用方法的区别就在与runtime。直接调用编译是会自动校验。如果方法不存在,那么直接调用 在编译时候就能够发现,编译器会直接报错。
但是使用performSelector的话一定是在运行时候才能发现,如果此方法不存在就会崩溃。所以如果使用performSelector的话他就会有个最佳伴侣- (BOOL)respondsToSelector:(SEL)aSelector;来在运行时判断对象是否响应此方法。

二API

  1.与线程无关,均为同步执行,主线成子线程都可以调用
    [self performSelector:@selector(test)];
    [self performSelector:@selector(test) withObject:@"张三"];
    [self performSelector:@selector(test) withObject:@"张三" withObject:@"李四"];

    2.主线程调用
    [self performSelectorOnMainThread:@selector(test) withObject:nil waitUntilDone:NO];

3.延迟执行
/*延迟执行 延迟2秒执行test方法
   该方法内部创建了timer,然后会添加到到runloop中,所以在子线程中执行该方法时注意先执行performselector方法,然后在执行runloop run方法
     如果在子线程调用那么test方法也在子线程中执行,在主线程执行,test也是在主线程调用
    */
    [self performSelector:@selector(test) withObject:nil afterDelay:2.0f];
4.异步线程执行,不使用GCD/NSThread/NSOperation
//开启新的线程在后台执行
    [self performSelectorInBackground:@selector(test) withObject:nil];
    //指定线程执行
    [self performSelector:@selector(test) onThread:[NSThread currentThread] withObject:nil waitUntilDone:NO];

Jetbrains全家桶1年46,售后保障稳定

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

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

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


相关推荐

  • mac系统pycharm配置python环境_mac pycharm怎么设置环境

    mac系统pycharm配置python环境_mac pycharm怎么设置环境安装了pycharm,创建了测试项目,发现python的版本是2.6.9的,系统自带的版本好像是2.7的,为什么怎么样,怎么切换到2.7看了一下系统到底装了些什么版本居然有两个版本接下来设置解释器的路径Pycharm>Preferences>Build,Excution,Deployment>Console>PythonConsole设

    2022年8月25日
    12
  • Android Studio提交项目到github

    Android Studio提交项目到github

    2021年10月2日
    51
  • ListView之多种类型Item

    ListView之多种类型Item一、概述一般而言,listview每个item的样式是一样的,但也有很多应用场景下不同位置的item需要不同的样式。拿微信举例,前者的代表作是消息列表,而后者的典型则是聊天会话界面。本文重点介绍

    2022年7月4日
    24
  • navicat 15激活码(破解版激活)

    navicat 15激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    45
  • 三菱PLC学习方法分享

    三菱PLC学习方法分享  学习plc不是为了研究,而是为了工作需要和应用。下面是我学习PLC的方法,供大家参考!  与PLC自动化相关的知识点很多,比如PLC控制、模拟控制、定位、通信、配置、嵌入式系统、变频器、机械传动、液压系统(不知道是不是自动化)等。知识点太多。以常见的PLC为例,三菱、西门子、欧姆龙、松下、LG、达美、卡恩斯等品牌,加上各种国产品牌和众多知识点。如何学好它们?我理解的学习方法是“巧学”。  以我熟悉的三菱plc为例:  一、基础:一定要打好基础——基础是什么?  1.安装编程软件。  

    2022年10月9日
    4
  • 如何用AI算法识别骗保行为?蚂蚁保险智能风控模型首次公开![通俗易懂]

    如何用AI算法识别骗保行为?蚂蚁保险智能风控模型首次公开![通俗易懂]阿里妹导读:人生充满意外和不确定性,保险的使命,就是给人以安全感。风控是保险业务正常发展的重要环节,成长于互联网环境下的保险风控更为重要。今天,阿里工程师正在利用跨平台体系下的海量数据资源和智能风控模型,优化保险风控,提升保险业务整体风控能力,让保险更好帮助人们对抗风险,减少后顾之忧。保险风控的背景以及挑战商业保险是一种用于保障未来的商业行为。除了我们常见的车险、财产险、健康险等传统保险以外,运费

    2022年5月11日
    48

发表回复

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

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