# iOS消息转发机制入门指南
**引言**
在iOS开发中,了解消息转发机制是我们理解对象之间交互的关键。消息转发是在运行时动态决定如何处理一个消息的过程,是Objective-C 的一项重要特性。这篇文章旨在帮助刚入行的小白了解如何实现消息转发,并通过具体的步骤和代码示例来解释这个过程。
## 消息转发流程图
在我们开始之前,先看看消息转发的整体流程:
```mermaid
flow            
                
         
            
            
            
            明确需求目的学习记录说说功能支持的已知缺点可拓展点适用版本结语使用方法 前言由于**女朋友**有时给我发送消息无法及时回复,女朋友会生气!
工作和个人需求,我有2部手机3个微信,得把工作生活都划分清楚嘛。
虽然每个微信都有女朋友的号,但是女人急起来是不和你讲道理的。
有时候发给微信A,恰好我带了微信B去吃饭,这样就无法回复了,所以我要做一个微信转发器。
**产生自我需求,是促使自我学习的必须条件            
                
         
            
            
            
            前言:之前一直有了解iOS中的消息转发机制,一直没有总结过。这篇文章就当是对之前碎片知识的总结吧。主要涉及到了runtime的消息传递和如果没有找到对象的方法,系统为我们提供的三次拯救机会。废话不多说,直接进行正文。 Runtime的消息传递我们都知道OC是一门动态语言。OC语言并不能直接被计算机所识别。需要先转换成C语言,然后转成汇编语言,最后转成计算机认识的机器语言。当我们调用一个对            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-13 15:05:14
                            
                                208阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            最近研究了一下iOS的消息转发机制,特此做记录,用一个真实的例子让自己理解的更深刻。这个例子会列举方法没有实现而导致崩溃的避免措施,。息的转发分为三步,通过这个例子看一下在每一步的转发中如何避免因为方法没有实现而导致的程序崩溃。先说一下消息转发的整个流程吧,我们知道调用对象的某一个方法的时候其实就是再给这个对象发消息,来调用他的方法,假如我们有一个Dog类,我们调用他的testFun方法,调用如下            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-01 17:21:31
                            
                                168阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录消息转发机制的前置条件消息转发机制1. 动态方法解析2. 备援接收者3. 完整的消息转发 消息转发机制的前置条件首先要理解消息传递的概念在OC中,方法的调用可以理解为对象接收消息,在这一过程中,采用动态绑定机制,即具体调用哪个方法要等到运行时才能确定并执行。那么首先给对象发送消息void returnValue = [someObject messageName:parameter];语            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-14 09:52:45
                            
                                114阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
               嗯,运行时,运行时是个好东西。在Objective-C语言中,这个特性可以帮助我们干很多的事情。   首先这个特性是把代码的决策从编译和链接时变成运行的时候,这样我们就可以用这个特性来做一些只有在运行的时候才能做到的东西,具体包括:   1.swizzling (交换两个方法的实现)   2.动态方法(可以在运行            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-27 17:29:07
                            
                                53阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            消息发送OC代码
[person read:book];
编译后
objc_msgSend(person, @selector(read:), book);objc_msgSend的具体流程如下:通过isa指针找到所属类查找类的cache列表, 如果没有则下一步查找类的”方法列表”如果能找到与选择子名称相符的方法, 就跳至其实现代码找不到, 就沿着继承体系继续向上查找如果能找到与选择子名称相符的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-19 10:56:53
                            
                                125阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            消息转发机制的回顾以及涉及的几个方法的备忘
    消息转发机制的回顾以及涉及的几个方法的备忘 一、OC消息发送原理 + 消息转发机制1、由于OC的动态特性,只有当程序运行起来之后,才知道要真正执行哪个函数(动态绑定)。在编译过程向类发送了其无法理解的消息并不会报错,因为在运行时,我们可以改变对象调用的方法、向类中添加方法。2、OC消息发送原理、方法查            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-24 15:32:28
                            
                                298阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # iOS消息转发使用详解
在iOS开发中,消息转发是一个非常重要且强大的特性。它使得对象在运行时能够动态决定如何响应消息。本文将对iOS中的消息转发进行详细介绍,其中包括基本概念、使用场景、代码示例以及一些常见应用。
## 消息转发的基本概念
在Objective-C中,当你调用一个对象的方法时,这个对象会首先尝试去响应这个方法。如果没有找到相应的方法实现,系统将调用消息转发机制。这一过程            
                
         
            
            
            
            # iOS消息转发机制深入解析
在iOS开发中,消息转发机制是一个非常重要且复杂的部分。为了更好地理解它,我们首先要了解Objective-C的消息发送过程。Objective-C是一种动态语言,它允许在运行时决定发送给对象的方法。这种灵活性使得我们能够实现许多强大的功能,如KVO、KVC和方法的替换。
## 消息发送过程
当你调用一个对象的方法时,Objective-C会执行以下几个步骤:            
                
         
            
            
            
            消息转发机制:消息转发机制是相对于消息传递机制而言的。1.消息(传递)机制RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。编译完成之后直接顺序执行,无任何二义性。OC的函数调用称为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(也就是说,在编译阶段,OC可以调用任何函数,即使这个函数并未实现            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-07 13:29:28
                            
                                17阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Objective-C 是一门动态语言,它将很多静态语言在编译和链接时期做的事情,放到了运行时来处理。之所以能具备这种特性,离不开 Runtime 这个库。Runtime 很好的解决了如何在运行时期找到调用方法这样的问题。消息发送在 Objective-C 中,方法调用称为向对象发送消息:// MyClass 类
@interface MyClass: NSObject
- (void)print            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-11 16:54:49
                            
                                53阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、消息转发现有如下示例:id o = [NSObject new];
[o lastObject];执行上面代码,程序会崩溃并抛出以下异常:[NSObject lastObject]: unrecognized selector sent to instance 0x100200160错误显而易见,实例对象 o 无法响应 lastObject 方法。那么问题来了, Objetive-C 作为一门            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-03 19:44:39
                            
                                207阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本文开始从三个大方向讲解消息转发:1:什么场景下会应用到消息转发;2:如何用代码调用实现消息转发;3:消息转发的内部原理。前言:我们经常会在代码中遇到,可能你未加注意,经常可能会崩溃在一个地方:然后提示你1. -[__NSCFNumber lowercaseString]: unrecognized selector sent to  
2. instance 0x87  
3. *** Term            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-19 15:53:29
                            
                                238阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在 iOS 生态系统中,消息转发机制是一项非常重要的特性,允许对象在接收不到消息时,将消息转发给其他对象,从而实现动态的消息处理。本文将带领你深入了解 iOS 消息转发的实现过程,包括技术原理、架构解析、源码分析、性能优化和扩展讨论等多个维度。
### 背景描述
在 iOS 开发的早期阶段,消息转发机制已被引入以提高系统的灵活性。特别是在 Objective-C 语言下,由于其动态特性,转发机制            
                
         
            
            
            
            在iOS开发中,Objective-C的消息转发机制是一个重要的技术能力,这为我们提供了动态方法调用的强大手段。然而,处理消息转发过程中难免遭遇各种技术挑战,包括性能问题和架构设计的复杂性。因此,我们在这篇文章中将详细探讨“iOS OC消息转发”的演进过程、架构设计、性能提升、故障复盘和扩展应用等方面的解决方案。
## 背景定位
在iOS开发中,消息转发是实现动态特性与灵活性的核心机制。初始阶            
                
         
            
            
            
            iOS消息发送转发涉及到对象之间的消息传递机制。在探究这一领域的过程中,我将深刻分析其技术背景、核心原理以及实践应用,为大家提供一篇全面的技术解析。
### 背景定位
在iOS开发中,对象之间的沟通是通过消息发送和转发的机制完成的。这一技术始于Objective-C的动态特性,使得消息的发送可以在运行时决定。随着Swift的引入,该机制得到了进一步的提升和优化。可以追溯到Objective-C            
                
         
            
            
            
            iOS消息转发消息转发解决NSNull取值崩溃在OC中是通过 [person eat]调用方法的。 他的底层实现是objc_msgSend(void /* id , self, SEL op, ... */ )。objc_msgSend需要动态查找自己要调用哪个方法, 会根据@selector的名字动态查找对应的方法。我们利用[person eat]进行举例, 列出方法查找的过程在person对象            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-30 09:32:43
                            
                                69阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言  在Objective-C中,如果某对象传递消息,那就会使用动态绑定机制来决定需要调用的方法;在底层,所有方法都是普通的C语言函数,然而对象接收消息之后,究竟该调用哪个方法则完全取决于运行期决定,设置可以在程序运行时改变,这些特性使得Objective-C成为一门真正的动态语言。 发消息给对象发送消息可以这样来写id returnValue = [someObject messageName            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-14 09:48:53
                            
                                43阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在对象上调用方法,是OC中经常使用的功能。用OC的术语来说,这叫做“消息传递”。  在很多语言中,比如C,调用函数就是跳转到内存中某一点开始执行代码,没有任何动态性可言,因为在编译期就决定了。而OC不同,是在运行时发送消息的。这个消息,也许会由对象自己处理,也可能被转发给另一个对象,或者不予理睬。下面就说一下消息传递是如何工作的:  (1)检查接受对象是否为nil,如果是,调用nil处理程序  (            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-06 18:50:19
                            
                                96阅读
                            
                                                                             
                 
                
                                
                    