下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结,

[delegate imageDownloader:self didFinishWithImage:image];

[delegate performSelector:@selector(imageDownloader:didFinishWithImage:) withObject:selfwithObject:image];

1、performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。如果imageDownloader:didFinishWithImage:image:不存在,那么直接调用 在编译时候就能够发现(借助Xcode可以写完就发现),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃);Cocoa支持在运行时向某个类添加方法,即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用。所以有时候如果使用了performSelector,为了程序的健壮性,会使用检查方法

- (BOOL)respondsToSelector:(SEL)aSelector;

2、直接调用方法时候,一定要在头文件中声明该方法的使用,也要将头文件import进来。而使用performSelector时候,可以不用import头文件包含方法的对象,直接用performSelector调用即可。

转载于:https://www.cnblogs.com/wangjuneng/p/4576252.html

关于performSelector调用和直接调用区别相关推荐

  1. 直观讲解一下 RPC 调用和 HTTP 调用的区别!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:浮生忆梦 blog.csdn.net/m0_3811 ...

  2. 直观讲解一下RPC调用和HTTP调用的区别

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:浮生忆梦 blog.csdn.net/m0_38110132 ...

  3. 把接口调用打成jar包的类怎么写_直观讲解RPC调用和HTTP调用的区别

    来源 :浮生忆梦 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~N ...

  4. oracle创建函数和调用存储过程和调用函数的例子(区别)

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  5. oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  6. RPC调用和HTTP调用的区别你知道吗

    前言 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive! ...

  7. 调用http_【学习充电】直观讲解一下 RPC 调用和 HTTP 调用的区别!

    很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...

  8. EJB3.0学习笔记---理解远程调用服务端和本地调用服务端的区别

    项目目的:理解远程调用服务端和本地调用服务端的区别 1.异常:       javax.ejb.EJBException: Local and Remote Interfaces cannot hav ...

  9. 同步调用和异步调用两者之间的区别

    前言   提到同步调用和异步调用两者的区别,首先笔者是从微服务间通讯方式角度出发来阐述这两者的区别. 同步通讯 调用方需要等待执行方的调用结果.(就像打电话一样,需要实时响应) 典型就是:Dubbo的 ...

  10. c语言中接口和函数的区别,接口与类的关系_接口函数和调用函数有什么区别

    描述 接口与类的关系 类与接口是两个概念,不能混淆. 接口概念 程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务.面向过程语言最基本的单元是过程和函数. ...

最新文章

  1. pytorch系列 -- 9 pytorch nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization...
  2. Python运算符还有能这样用?
  3. nullable java_java-持久性@Column nullable = false可以插入null
  4. Ubuntu composer安装失败解决方案
  5. 重新初始化k8s master节点
  6. springboot 关于 Class path contains multiple SLF4J bindings.警告的解决
  7. bootstrap课程5 bootstrap中的组件使用的注意事项是什么
  8. 吴恩达神经网络和深度学习-学习笔记-5-参数和超参数
  9. curl: symbol lookup error: curl: undefined symbol: curl_mime_free
  10. 个人笔记:C语言逻辑运算符
  11. Kubernetes 集群安全机制详解
  12. CPU频率,到底是什么?
  13. 重点来了,具有优质脂肪的坚果居然是减肥的好帮手!
  14. 灵活提取Excel数据工具
  15. C++中虚函数的理解,以及简单继承情况下的虚函数的表!
  16. 醉翁之意不在酒 “三维地籍”背后大棋局
  17. php开发服务器电脑,如何在自己电脑搭web服务器开发环境
  18. 全国职业院校技能大赛2022年大数据技术与应用平台搭建
  19. 为什么StringBuilder是线程不安全的
  20. 什么情况下产品要做CQC认证

热门文章

  1. 基础XML配置的AOP与基于注解实现的AOP详细对比
  2. 2020-02-09 改udev硬件配置策略,改ETHTOOL_OPTS 或改 `/etc/NetworkManager/dispatcher.d/20-ethtool`...
  3. hive,skynet以及go语言
  4. 用Aspose.Words 从Word文档中提取表格数据
  5. wamp修改默认80端口
  6. 项目启动会ppt_公司召开SAPERP项目启动会
  7. ubintu yum装mysql_Ubuntu 下安装Mysql centos8 下安装mysql8.0
  8. Doris之物化视图
  9. Hadoop集群的启动顺序
  10. bash git 如何切换目录_【git】命令行与本地仓库/远程仓库