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


相关推荐

  • Spring概述

    部分转载来自:w3cschool一、程序间的依赖关系1、程序的耦合:调用者或被调用者的依赖关系2、耦合的缺点:      1、维护不方便      

    2021年11月30日
    37
  • pytest重试_pytest失败重跑

    pytest重试_pytest失败重跑安装:pip3installpytest-rerunfailures重新运行所有失败用例要重新运行所有测试失败的用例,请使用–reruns命令行选项,并指定要运行测试的最大次数:$py

    2022年7月30日
    9
  • enumerate方法_enumerate函数的作用

    enumerate方法_enumerate函数的作用python中的获得索引、和值得方法:enumerate这种方式可以获得索引以及对应的值。但是这显得很繁琐。python其实提供了内置的enumerate函数可以同时获得索引和值,可以这样实现:forindex,keyinenumerate(sequence):process(index,key)如果你想对sequence中的元素作逆置后处理,可以:forind…

    2025年7月9日
    1
  • 工作流入门教程(flowable框架)

    工作流入门教程(flowable框架)最近有一段时间没写博客了,本来打算写写对于工作流的心得,但是工作时间比较饱和只好延后。最初接触工作流是上一家公司工作,具体我不透露哪家公司,只是感受到人情冷暖,或许公司都是这样,当你的价值被用完了也就是你走人的时候。好了,废话不多说,我们直接进入主题。前言对于框架的选型,我推荐使用flowable框架,在最初的项目选型是选择activiti的,但是深入去了解框架的时候发现activiti还是有一些坑的,而flowable正是activiti框架的修正版,据了解flowable的背景是activiti原班

    2022年5月21日
    1.8K
  • 《Java核心技术 卷1》「建议收藏」

    《Java核心技术 卷1》「建议收藏」<1>静态字段和静态方法classEmployee{privatestaticintnextId=1;privateintid;….}每一个Employee对象都有一个自己的id字段,但是这个类的所有实例将共享一个nextId字段,换句话说,如果有1000个Employee类对象,则有1000个实例字段id,分别对应一个对象,但是只有一个静态字段nextId,即使没有Employee对象,静态字段nextId也存在,它属于类,…

    2022年7月8日
    19
  • java executeupdate_执行完executeUpdate()方法…-体系课

    java executeupdate_执行完executeUpdate()方法…-体系课如题:Servlet代码如下:packagejdbcHomeWork;importjava.io.IOException;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjavax.servlet.ServletException;importja…

    2022年10月20日
    7

发表回复

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

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