简述下Objective-C中调用方法的过程(runtime)
2020-02-02 05:20
801 查看
- Objective-C是动态语言,每个方法在运行时会被动态转为消息发送,即:
objc_msgSend(receiver, selector)
,整个过程介绍如下: objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类 - 然后在该类中的方法列表以及其父类方法列表中寻找方法运行
- 如果,在最顶层的父类(一般也就NSObject)中依然找不到相应的方法时,程序在运行时会挂掉并抛出异常
unrecognized selector sent to XXX
- 但是在这之前,objc的运行时会给出三次拯救程序崩溃的机会,这三次拯救程序奔溃的说明见问题《什么时候会报unrecognized selector的异常》中的说明
转载于:https://www.cnblogs.com/VzhanggengD/p/6483860.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- ios 中调用函数的方法是消息传递,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以Objective-C可以在runtime的时候
- (一)Runtime 系统调用方法的过程
- Objective-C Runtime 运行时之三:方法与消息
- Java对存储过程的调用方法
- Java调用存储过程的方法
- dblink远程库表结构修改导致本地库调用此表的存储过程出错问题解决方法
- sybase存储过程的写法以及java的调用方法
- 调用webservice客户端方法 runtime modeler error: Wrapper class ××× is not found. Have you run APT to generate them?
- VC调用存储过程的通用方法(ORACLE篇)
- asp.net 常用的几种调用存储过程的方法
- delphi adodataset1 调用存储过程的方法
- Objective-C学习笔记(十八)——对象方法和类方法的声明,定义及调用
- asp.net中调用存储过程的方法
- 存储过程从入门到熟练(多个存储过程完整实例及调用方法)
- 方法及Activity调用压出栈过程
- EXTASPNET C# ASP.NET sql server 调用存储过程超时,解决方法
- Class.getClasses()方法调用过程
- 《.NET中统一的存储过程调用方法(收藏) 》的具体实现
- java jdbc 调用存储过程方法
- [转]Objective-C Runtime 运行时之三:方法与消息