关于performSelector调用和直接调用区别
下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用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调用和直接调用区别相关推荐
- 直观讲解一下 RPC 调用和 HTTP 调用的区别!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:浮生忆梦 blog.csdn.net/m0_3811 ...
- 直观讲解一下RPC调用和HTTP调用的区别
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:浮生忆梦 blog.csdn.net/m0_38110132 ...
- 把接口调用打成jar包的类怎么写_直观讲解RPC调用和HTTP调用的区别
来源 :浮生忆梦 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~N ...
- oracle创建函数和调用存储过程和调用函数的例子(区别)
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- RPC调用和HTTP调用的区别你知道吗
前言 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive! ...
- 调用http_【学习充电】直观讲解一下 RPC 调用和 HTTP 调用的区别!
很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...
- EJB3.0学习笔记---理解远程调用服务端和本地调用服务端的区别
项目目的:理解远程调用服务端和本地调用服务端的区别 1.异常: javax.ejb.EJBException: Local and Remote Interfaces cannot hav ...
- 同步调用和异步调用两者之间的区别
前言 提到同步调用和异步调用两者的区别,首先笔者是从微服务间通讯方式角度出发来阐述这两者的区别. 同步通讯 调用方需要等待执行方的调用结果.(就像打电话一样,需要实时响应) 典型就是:Dubbo的 ...
- c语言中接口和函数的区别,接口与类的关系_接口函数和调用函数有什么区别
描述 接口与类的关系 类与接口是两个概念,不能混淆. 接口概念 程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务.面向过程语言最基本的单元是过程和函数. ...
最新文章
- pytorch系列 -- 9 pytorch nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization...
- Python运算符还有能这样用?
- nullable java_java-持久性@Column nullable = false可以插入null
- Ubuntu composer安装失败解决方案
- 重新初始化k8s master节点
- springboot 关于 Class path contains multiple SLF4J bindings.警告的解决
- bootstrap课程5 bootstrap中的组件使用的注意事项是什么
- 吴恩达神经网络和深度学习-学习笔记-5-参数和超参数
- curl: symbol lookup error: curl: undefined symbol: curl_mime_free
- 个人笔记:C语言逻辑运算符
- Kubernetes 集群安全机制详解
- CPU频率,到底是什么?
- 重点来了,具有优质脂肪的坚果居然是减肥的好帮手!
- 灵活提取Excel数据工具
- C++中虚函数的理解,以及简单继承情况下的虚函数的表!
- 醉翁之意不在酒 “三维地籍”背后大棋局
- php开发服务器电脑,如何在自己电脑搭web服务器开发环境
- 全国职业院校技能大赛2022年大数据技术与应用平台搭建
- 为什么StringBuilder是线程不安全的
- 什么情况下产品要做CQC认证
热门文章
- 基础XML配置的AOP与基于注解实现的AOP详细对比
- 2020-02-09 改udev硬件配置策略,改ETHTOOL_OPTS 或改 `/etc/NetworkManager/dispatcher.d/20-ethtool`...
- hive,skynet以及go语言
- 用Aspose.Words 从Word文档中提取表格数据
- wamp修改默认80端口
- 项目启动会ppt_公司召开SAPERP项目启动会
- ubintu yum装mysql_Ubuntu 下安装Mysql centos8 下安装mysql8.0
- Doris之物化视图
- Hadoop集群的启动顺序
- bash git 如何切换目录_【git】命令行与本地仓库/远程仓库