object-C 类之间的消息处理机制

4、Windows消息处理机制详解 本文详细解析了Windows消息处理机制,涵盖消息的生成、传递和处理流程,深入介绍了消息队列与线程的关系、WndProc窗口过程、钩子函数的应用等内容。通过示例代码讲解了消息循环、子类化窗口以及钩子函数的具体实现,并总结了相关API函数的用途及使用方法。适合希望深入了解Windows应用程序开发核心机制的开发者阅读。 阅读详情

Object-C,有时候常常两个类之间需要进行通信。一个界面的信息可能会影响到其它的类。两个类之间需要交换某些信息。

那么Object-C中如何实现两个类之间信息的传递呢。

有一种简单的方法是设置属性,比如要把A类的信息传到B类去,则在B类定义属性来接收。即在push的时候,直接为B类的该属性赋值。这种方法适用于从一个界面push到另一个界面的传值,而且还是由前一个传到后一个。

下面介绍任意两个类之间的消息传递方式:消息转发和委托代理

1.消息转发

使用消息转发中心NSNotificationCenter

假设类A和类B需要通信,当B选择某一行时,A类界面信息需要发生改变

则在B类选择某行的时候,发送一个消息

 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:select,@"selectedInfo", nil];

[[NSNotificationCenter defaultCenter] postNotificationName:@"selected" object:self userInfo:dict];


然后在A类中,添加一个消息转发的入口,告诉receiver(A类)收到消息“selected”时

该派到哪处理。这个一般都加载viewDidLoad中

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onMsg:) name:@"selected" object:nil];


然后再定义入口函数,在入口函数里面处理该消息

入口函数一般格式:-(void) onMsg:(NSNotification *) notif

notif就携带了消息的信息。如消息的名字,传递的参数

 NSString *strMsg = [notif name]; //这个就可以获取消息名字

[notif userInfo] 里包含用户传递的信息,是一个Dictionary,根据如何传的相应的取。注意传和取保持一致。


2.委托代理

代理看上去似乎麻烦一点点,不过也还好。平常我们也经常用到苹果自带的代理delegate。相信大家都不陌生。那么自己如何实现代理呢?

假设A类接收到某个信息,需要将这些信息传给B类需要更新或处理某些信息

首先在A类中声明一个协议,继承NSObject,协议中有一个函数,即代理函数

可以设置多个,还可以设置是可选的还是必须的。默认都是可选的



@protocol ListenServerDelegate <NSObject>

-(void) hasRecievedFromServer:(NSString *)msg;

@end


然后在A类的成员变量中声明这个变量,再把它定义成属性

@interface A : UIViewController

{

    id<ListenServerDelegate> delegate;

}

@property (assign, nonatomic) id<ListenServerDelegate> delegate;


然后当A类接收到某个信息时,需要触发到B类,则使用代理调用代理函数


[delegate hasRecievedFromServer:[NSString   stringWithUTF8String:strReadMsg.c_str()]];  


然后B类需要实现代理ListenServerDelegate的代理函数

@interface B : UIViewController<ListenServerDelegate>


在B类中声明A类成员变量,设置A的委托对象为B。即当A收到某个消息时,将信息传给B,委托B来处理

A a;

a.delegate = self;


在B类的.m文件里实现代理函数

-(void) hasRecievedFromServer:(NSString *)msg

{

。。。。。。

过程

}


代理函数形式可以根据自己的需要随意定义。

一般是函数名,然后将A类中要传给B的参数列表


RLC电阻电容电感基础知识——电感篇 电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω 阅读详情

相关推荐

超酷炫,Python实现交通数据可视化!

此时输出的栅格化参数params的内容存储了栅格坐标系的原点坐标(slon、slat)、单个栅格的经纬度长宽 (deltalon、deltalat)、栅格的旋转角度(theta)、栅格的形状(method参数,其值可以是方形rect、三角形tri和六边形hexa)以及栅格的大小(gridsize参数,单位为米)。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。今天分享一次Python交通数据分析与可视化的实战!

m0_59236127的博客 1696

iOS NSNotification的使用(1)

如果在一个类中想要执行另一个类中的方法可以使用通知 1.创建一个通知对象:使用notificationWithName:object: 或者 notificationWithName:object:userInfo:     NSNotification* notification = [NSNotification notificationWithName:kImageNotificat

探路者_iOS 490

stm32cubeMX使用HAL库点亮LED流水灯

目录

weixin_46129506的博客 3796

objective-c NSNotificationCenter,addObserver

// viewWillAppear [self usePreferredFonts]; // 系统字体更改 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(usePreferredFonts) name:UIContentSizeCategoryDidC

wyr0924的专栏 850

手把手教你配置SAP PP供应区域(Supply Area):实现线边仓精准发料与物料流优化

本文详细解析了SAP PP供应区域(Supply Area)的配置方法,帮助企业实现线边仓精准发料与物料流优化。通过三级优先级逻辑和四步配置法,系统可自动识别最优组件来源位置,显著提升生产订单处理效率和库存准确率。文章还提供了典型问题解决方案和性能优化技巧,适用于离散制造和重复制造场景。

weixin_29275257的博客 431

深度学习十大算法之Word2Vec

Word2Vec的提出,标志着词嵌入技术的一次重大进步。Word2Vec是一种高效的词嵌入模型,由Google的研究团队于2013年开发。它使用一种称为神经网络的机器学习方法,通过学习大量文本数据,生成能够表达词语间丰富语义关系的词向量。Word2Vec的核心优势在于它能够捕捉到词语之间的细微关系。例如,在Word2Vec模型中,可以通过计算向量之间的距离来估计词语之间的相似度。这不仅能帮助理解语言的复杂性,还可以应用于各种NLP任务,如机器翻译和搜索引擎优化。

第欧根尼的酒桶的博客 1864

Object-C底层原理总结

Object-C-底层原理一.对象的本质二.isa superclass 指针.isa superclass 指针三.kvo分析功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 一.对象的本质 OC的类主要C\C++的机构体来实现

weixin_42580612的博客 2885

Hive SQL零基础到精通:100道练习题+答案,SQL能力快速提升

我将以我15年架构与开发的经验,带领大家从零基础到精通,通过精心设计的100道练习题及其详解,系统地、深度地掌握Hive SQL的核心精髓。它可以将结构化的数据文件映射为一张数据库表,并提供了一套类SQL的查询语言——HiveQL(简称HQL),允许熟悉SQL的用户直接查询存储在HDFS上的海量数据。它将Job描绘为DAG(有向无环图),允许更灵活的任务编排,避免不必要的中间落盘,可以复用容器,从而大幅降低延迟。希望你以此文为起点,在广阔的大数据世界里继续遨游,成为一名真正的数据高手!

架构师的AI之路,分享AI应用开发架构的学习与实践。 797

Objective-C中的Observer模式实现

<br /><br />文章出处<br /> <br />在我们的iOS开发中,很幸运,Cocoa架构中已经提供了消息中心组件来实现Observer模式。NSNotificationCenter<br />NSNotificationCenter 是 Cococa消息中心,统一管理单进程内不同线程的消息通迅,其职责只有两个:<br />1,提供“观查者们”对感兴趣消息的监听注册[[NSNotificationCenter defaultCenter] addObserver:self

天道酬勤 6074

使用MATLAB的COMSOL LiveLink:实时连接和数据传输

COMSOL LiveLink是一种功能强大的MATLAB工具包,它允许用户在MATLAB环境中与COMSOL Multiphysics软件进行实时连接和数据传输。COMSOL LiveLink是一种功能强大的MATLAB工具包,它允许用户在MATLAB环境中与COMSOL Multiphysics软件进行实时连接和数据传输。使用COMSOL LiveLink,你可以进行更复杂的模型设置和数据传输使用MATLAB的COMSOL LiveLink:实时连接和数据传输。

PixelNinja的博客 2088

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2705

Object-C的函数调用机制详解--消息

本文系转载,原文出处:http://blog.youkuaiyun.com/kesalin ps:Object-C和C,C++,java的函数调用机制还是有所区别的,其完全的runtime的调用方式是其实现消息机制的本质内容! 在入门级别的ObjC 教程中,我们常对从C++或Java 或其他面向对象语言转过来的程序员说,ObjC 中的方法调用(ObjC中的术语为消息)跟其他语言中的方法调用差不

程序人生 1万+

【GeoDa实用技巧100例】024:geoda计算全局(局部)莫兰指数Moran‘s I,LISA聚类地图,显著性地图

【GeoDa实用技巧100例】024:geoda计算全局(局部)莫兰指数Moran's I,单变量莫兰指数,双变量莫兰指数计算,LISA聚类地图,显著性地图,Geoda双变量莫兰指数是一种强大的地理空间数据分析工具。

智慧空间实验室 6050

runtime 消息处理机制 -- (一)

这一章,我们就要开始讨论Runtime中最有意思的一部分:消息处理机制。我们将详细讨论消息的发送及消息的转发。不过在讨论消息之前,我们先来了解一下与方法相关的一些内容。 基础数据类型 SEL SEL又叫选择器,是表示一个方法的selector的指针,其定义如下: 1 typedefstructobjc_selector*SEL; objc_s...

gcs的博客 510

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

c语言中消息处理函数,Object - C 的消息处理机制与 Method Swizzling(函数混淆)

objc_msgSend在Object-C中,我们经常调用一个对象的方法,通常我们将这个过程成为 消息传递。不同于 C 语言对对象方法的静态调用,Object-C 是通过 Dynamic Binding (动态绑定) 机制来实现消息传递的,对象对于详细的响应和处理都是在 runtime 运行时才能决定。通常,一个消息传递是这个样子的id result = [object messageName:p...

weixin_35149268的博客 392

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Qt中的消息处理

1 Qt中的消息处理简单介绍 1.1Qt消息模型 Qt消息模型: Qt封装了具体操作系统的消息机制。 Qt遵循经典的GUI消息驱动事件模型。 思考如下几个问题: Qt中如何表示用户消息? Qt中如何映射用户消息到消息处理函数? Qt中消息映射需要遵循什么规则? 1.2 信号与槽 Qt中定义了与系统消息相关的概念: 信号(Signal): 由操作系统产生的消息。 槽(Slot): ...

木子皿--啥都不会的菜鸟 645

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

服务端Skynet(四)——lua层消息处理机制

skynet

weixin_43730892的博客 1162

iOS 消息处理机制

iOS runtime消息处理机制: 消息处理机制是runtime系统的最主要的机制。和C语言不同,C语言在编译的时候已经决定了在程序运行时会调用哪些函数,编译完成只需要顺序执行;Object-C的函数调用是消息发送,属于动态的调用,在编译过程中不真正决定调用的具体函数,只要函数被声明过,即使没有实现,编译也不会报错;只有在真正运行的时候,才会根据函数的名称找到对应的实现。

u014588619的专栏 605

iOS运行时机制之消息处理机制

runtime

realyezi的博客 1920

Android消息处理机制(阻塞和唤醒)

前置知识1: 学习任何知识都是要有一定的前置条件的,比如你要先识字才能“看懂”我这篇文章… 在全面了解Android消息处理机制之前,我希望读者对该机制最好要有一定的了解,至少知道主要由哪些类实现了该机制。 如果你还能看得懂c/c++代码,精通Linux内核,对pipe、eventfd和IO多路复用epoll机制都有深入的了解,那么我劝你就别看了… 本文的侧重点主要在于消息机制中的阻塞和唤醒上,对于Java层面的组成关系会简单的带过,这部分的内容已经烂大街了,如果想对于Java层的源码逐行分析请看下面的源码

omyrobin的专栏 1967

Android 探索消息处理机制

《Android系统源代码情景分析》 博客 Android系统主要通过MessageQueue,Looper,Handler三个类来实现Android应用程序的消息处理机制. MessageQueue:用来描述消息队列 Looper:用来创建消息队列以及进入消息循环 Handler类用来发送消息和处理消息 概述 Android 应用程序的消息处理机制不仅可以在Java中用,也可以在C++...

碧云天丶 246

Android消息处理机制

<br />大家在学习Handler之前应该先了解Android的消息处理机制,这样有助于掌握Handler的使用原理。<br />一.角色描述<br />1.Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。<br />2.Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里,或者接收Looper(从Message Queue取出)所送来的消息。<br />3.Message Q

zuolongsnail的专栏 9311

QT 学习(七) -- QT消息处理机制

Qt中定义了与系统消息相关的概念: 信号 (Signal) 由操作系统产生的消息 槽 (Slot) 程序中的消息处理函数 连接 (Connect) 将系统消息绑定到消息处理函数 信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出特征。在GUI编程中,当改变了一个部件时,总希望其他部件也能了解到该变化。更一般来说,我们希望任何对象都可以和其他...

Foxproll的专栏 558

qt 消息处理机制深入分析(基于window平台)

在说明qt消息机制前,有必要说明下window下的消息处理机制。 一 windows消息处理机制: 1  注册窗口类(指定窗口函数),可以注册多个窗口类 2  进入消息循环形式如下: 首先取消息PeekMessage(&msg,0,0,0,PM_REMOVE); 从应用程序队列,也就是从主线程的消息队列中。 接着转换消息并派发: TranslateMessage(&msg);

yuxinming123456的博客 8275

AsyncTask(异步消息处理机制)

原理 在android中有两条原则,第一条是:我们不能再UI Thread中进行耗时的操作 以免阻塞UI Thread 第二条是:不能再UI Thread之外的线程中操纵UI元素 所以当我们需要从网上下载一张图片(耗时操作)并且更新到UI界面(更新到UI中)的时候,这个时候就要用到异步消息处理机制:Handler机制(之前的博客已经详细介绍)请点击   接下来讲解另外一种消息处理机制:Asy

xin917480852的博客 613

消息处理机制

MFC将thread分成winddow thread和worker thread,在讨论多现程(Multi-thread)之前,我们先只考虑window thread。    windows programming的基本工作方式和console application的不同,基本上是这样运行的,程序从WinMain()开始,然后进入一个message loop,程序在这里等待发给它的所有消息然

wangchuanjin的专栏 701
上一篇: 触摸与手势
下一篇: 关于clang: error: invalid deployment target for -stdlib=libc++ (requires iOS 5.0 or later)
sandy_shell
博客等级 码龄15年 17粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值