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)
上一篇 2025年8月2日 上午10:22
下一篇 2025年8月2日 上午11:01


相关推荐

  • Java中Iterator用法整理

    Java中Iterator用法整理迭代器 Iterator 迭代器是一种设计模式 它是一个对象 它可以遍历并选择序列中的对象 而开发人员不需要了解该序列的底层结构 迭代器通常被称为 轻量级 对象 因为创建它的代价小 Java 中的 Iterator 功能比较简单 并且只能单向移动 1 使用方法 iterator 要求容器返回一个 Iterator 第一次调用 Iterator 的 next 方法时 它返回序列的第一

    2026年3月18日
    3
  • 使用SLF4J时的一个错误Failed to load class org.slf4j.impl.StaticLoggerBinder

    使用SLF4J时的一个错误Failed to load class org.slf4j.impl.StaticLoggerBinder问题描述使用日志一直都是使用了 slf4j api slf4j log4j12 log4j 这三个包结合起来使用 新搭建了一个项目 然后创建了一个 main 方法进行测试运行 然后发现报错了 Failedtoload slf4j impl StaticLogger 解决过程去 SLF4J 的官网查询这个错误的原因是什么 得到的结论是 无法

    2025年11月24日
    6
  • 软件版本号命名规范1.0.0.1什么意思_医疗器械软件版本号命名规范

    软件版本号命名规范1.0.0.1什么意思_医疗器械软件版本号命名规范软件版本号命名规范总原则标准的版本号必须采用XYZ的格式,并且X、Y和Z为非负的整数,禁止在数字前方补零版本是严格递增的,此处是:16.2.0->16.3.0->16.3.1在发布重要版本时,可以发布alpha,rc等先行版本alpha和rc等修饰版本的关键字后面可以带上次数和meta信息版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,必…

    2025年10月22日
    10
  • 互联网巨头大模型策略分析:开源与闭源路径技术、生态与商业博弈

    互联网巨头大模型策略分析:开源与闭源路径技术、生态与商业博弈

    2026年3月13日
    2
  • 信息系统项目管理师之二决策树分析

    信息系统项目管理师之二决策树分析名称 决策树分析 EMV 期望货币值 定义 迫使考虑各种可能的情况 常结合 EMV 使用适用过程 风险定量分析示例 下面以南方医院供应公司为例 看一看如何利用决策树作出合适的生产能力计划 nbsp 南方医院供应公司是一家制造医护人员的工装大褂的公司 该公司正在考虑扩大生产能力 它可以有以下几个选择 1 什么也不做 2 建一个小厂 3 建一个中型厂 4 建一个大厂 新增加的设备将生产一种

    2026年2月6日
    3
  • 语句覆盖、条件覆盖(分支覆盖)、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖 的区别

    语句覆盖、条件覆盖(分支覆盖)、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖 的区别文章转自 https blog csdn net virus2014 article details 更新时间 2019 10 2213 061 语句覆盖每个可执行语句都走一遍即可 即测试用例要覆盖所有的语句 来源 软件开发的技术基础 2 判定覆盖 分支覆盖 针对判断语句 在设定案例的时候 要设定 True 和 False 的两种案例 与语句覆盖不同的是增加

    2026年3月18日
    1

发表回复

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

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