iOS中协议delegate的传值注意点

iOS编程——OC viewController 传值常用方法Delegate和Block的使用 写了个例子,简单介绍了下Delegate和Block的使用,注意点都在注释里,直接上代码了: 1.FirstViewController.h: #import @interface FirstViewController : UIViewController @end FirstViewController.m: #import "FirstViewController.h" # 阅读详情

1、iOS中协议的用途一般是用来进行反向传值,一般步骤如下:

1)声明协议

@protocol ThirdDalegate <NSObject>

-(void)printNum:(int)num;//自定义方法用来反向传值

@end

2)定义协议属性

@property(nonatomic,assign)id<SecondDalegate>delegate;//定义属性delegate

3)实现协议方法

//一般先判断协议方法是否已响应(即是否有其他类遵从本类的协议)

if ([self.delegaterespondsToSelector:@selector(printNum:)]) {

        [self.delegateprintNum:1];//进行传值

    }

4)代理类接收值(传值的类可以理解成委托类)

@interface ViewController ()<SecondDalegate>

- (void)viewDidLoad {

SecondViewController * second=[[SecondViewControlleralloc]init];

second.delegate=self;

}

-(void)printNum:(int)num{

  NSLog(@"%d",num);

}

ps:以上为正常情况下的协议反向传值,是最协议最常见的用法


2、但是有时候我们会想要自定义控件,类似UITableView,那么此时单纯的反向传值已经满足不了该需求,因为我们需要在初始化该控件的时候利用协议传值到该控件内部,类似UITableView的numberOfRowsInSection设置cell数量的这种方法。

1)在委托类中声明协议

@protocol ThirdDelegate <NSObject>

-(NSInteger)ViewWithNum;

@end


2)协议属性

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

-(instancetype)initWithFrame:(CGRect)frame andDelegate:(id)delegate;

//一般在控件初始化的时候就传入代理类,以协议方法由于顺序原因不响应

@end

3)在代理类中实现传值

@interface ViewController ()<ThirdDelegate>

- (void)viewDidLoad {

    TempView * tempV=[[TempViewalloc]initWithFrame:self.view.bounds andDelegate:self];

    [self.viewaddSubview:tempV];

}

-(NSInteger)ViewWithNum{

    return 3;

}

4)自定义控件实现初始化方法

-(instancetype)initWithFrame:(CGRect)frame andDelegate:(id)delegate{

    self=[superinitWithFrame:frame];

    if (self) {

        self.backgroundColor=[UIColorredColor];

        self.delegate=delegate;//注意点:必须先遵从协议才能响应方法  

        if ([self.delegaterespondsToSelector:@selector(ViewWithNum)]) {

          NSLog(@"%ld",(long)[self.delegateViewWithNum]);

        }

    }

    return self;

}




iOS Block与Delegate的用法,各自优缺点及使用场景 问题: 你是否有想过在UITableViewCell上把UIButton点击事件回调到UIViewController?你是否有想过在封装Alamofire或者AFNetWorking的时候回调网络数据? 概念: Block官方解释: Block objects are a C-level syntactic and runtime feature. They are similar to... 阅读详情

相关推荐

03、3分钟教你搞定这该死的Delegate!代理与协议委托的深度理解

总结做程序时,经常会碰到这样一种情况:在对象A中有一个对象B,在B中做某个操作时需要调用A对象的某个方法。这时,我们就需要用代理机制,也叫委托机制。还记得刚接触面向对象的时候,居然在B对象中又alloc了一个A对象,发现执行方法时没有works,那时不理解新alloc的对象和原来的对象A不是一个东东。 今天专门补习了一下哈,在网上找了一些资料,综合了一下,写了这篇菜鸟教程。委托代理(delegat

康大亮学IOS 1453

iOS委托代理(delegate)介绍

OC是没有多继承的,所以在很多时候,需要使用到协议(protocol)。前面有文章对协议进行了简单的介绍,这里就不多说了。这里说一下一个与协议有关的东西----委托代理(delegate)。 委托代理是指给一个对象提供一个机会,对另一个对象中的变化做出反应,或者响应另一个对象的行为。它的基本思想是两个对象协同解决问题。 委托代理,其实是两个部分,委托和代理,在程序中委托和代理协同处理问题。

m0_37681833的博客 703

iOS开发基础-delegate(委托)

1.定义 代理设计模式,是IOS中一种消息传递的方式,由代理对象、委托者、协议组成。 协议:用来指定代理可以做什么,必须做什么 代理:根据指定协议,完成委托方需要实现的方法 委托:根据指定协议,指定代理必须完成和可以完成的方法 2.作用 传值(逆向传值) 传递事件 3.传值 声明协议: NextViewController.h #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN //声明协议

qq_41843697的博客 424

iOS 彻底学会使用delegate

委托delegation的介绍:         委托delegation是一种简单但是功能强大的设计模式,它的功能是程序中一个对象代表另一个对象,或者一个对象与另外一个对象协同工作。委托对象保留了另外一个对象的引用,即就是委托,以及在合适的时候发送消息给委托。消息通知事件的委托方法,委托对象将要处理或已经处理。委托可能通过更新本身或者本应用的其他对象的状态或者外观来对消息进行响应,在某些

Kikim的地盘 4万+

ChipCamp探索系列 -- 7A. 开源CPU之BOOM的来龙去脉

本文梳理一下Berkeley的乱序超标量CPU项目----Berkeley Out of Order Machine (BOOM),作为探索7系的首篇(7A)。

ChipCamp的博客---https://chipcamp.blog.youkuaiyun.com/ 1558

TwinCAT 3 实战:手把手教你用PLC和C++读写第三方伺服驱动器的CoE参数

本文详细介绍了在TwinCAT 3环境中通过PLC和C++两种技术路线实现对第三方伺服驱动器CoE参数的精准操控。从环境准备到具体实现,包括硬件配置、核心函数使用及性能优化策略,为工程师提供了全面的实战指南。特别针对CoE参数访问的效率和稳定性问题,给出了实用的调试技巧和异常处理方案。

weixin_33743248的博客 442

ios中关于delegate(委托)的使用心得

从开始从事OC工作到现在大概1年多了,从当初接触oc的"协议"的不明白,到现在代码中随处可见的委托,协议,其中感悟颇多。 首先,大家应该都明白的是委托是协议的一种,顾名思义,就是委托他人帮自己去做什么事。也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实现什么方法。 其次,我简单的总结了一下自己用到的委托的作用有两个,一个是传值,一个是传事件。

huifeidexin_1的专栏 14万+

激光甲烷传感器DIY指南:从DFB激光器选型到Herriott池光路搭建

本文详细介绍了如何DIY激光甲烷传感器,从DFB激光器选型到Herriott池光路搭建的全过程。通过TDLAS技术实现ppm级甲烷检测,适用于家用燃气泄漏监测和农业沼气监测等场景。文章包含核心器件选型、光路搭建技巧、信号调理方案及系统集成优化,为创客提供实用指南。

f9g0h的博客 594

ios学习-delegate、传值、跳转页面

1.打开xcode,然后选择ios--Application--Empty Application一个空项目。

希望能找到你的答案 16万+

DNN加速器脉动阵列轻量级瞬时故障检测

本文系统综述了面向深度神经网络(DNN)脉动阵列加速器的轻量级瞬时故障检测技术。通过分析比较算法级校验(ABFT)、数值异常监测(剪裁、中值滤波等)、硬件编码检错(AN码、剩余码)以及选择性冗余等方案,指出这些方法能以5%-10%的开销实现对权重和激活比特翻转的高效检测,远低于传统ECC/冗余计算的成本。研究显示,结合多种轻量技术可构建多层防护体系,在保障推理可靠性的同时保持加速器的高性能特性。该成果为安全关键领域的DNN加速器设计提供了重要参考。

欢迎交流! 1073

华为海思2026届数字IC秋招笔试真题解析与实战技巧(2025最新版)

本文深度解析华为海思2026届数字IC秋招笔试真题,涵盖高频考点如后端设计、低功耗设计、SystemVerilog语法等核心内容。提供时序违例修复、时钟树综合等实战技巧,帮助考生高效备考。特别关注UPF低功耗设计规范等最新考点,助力考生在秋招笔试中脱颖而出。

lg888的博客 1088

IOS delegate代理传参

IOS开发界面之间传递参数的方式有很多种。 1、使用SharedApplication,定义一个变量来传递. 2、使用文件,或者NSUserdefault来传递 3、通过一个单例的class来传递 4、通过Delegate来传递 下面简单介绍一下使用delegate方式传参 现在有两个界面,FriendsViewController(A表示)和PersonInf

仰望 星空的专栏 3954

【系统分析师】2026年上半年真题:案例分析-答案及详解(回忆版)

案例一聚焦因果分析法(鱼骨图)的应用,分析企业订单履约问题。问题1阐述因果分析法定义及常见方法(鱼骨图、5个为什么等);问题2将8个原因归类为人员、方法、合同等5类;问题3筛选适合鱼骨图的场景(如系统响应慢、服务器故障等),强调其适用于复杂根因分析。 案例二对比嵌入式系统中Linux与RTOS的差异(实时性、资源占用等),结合智能监控终端需求推荐Linux+四核ARM方案(高算力、性价比),并列选Linux的5大优势(生态成熟、多任务支持等)。 案例三设计互联网医院系统用例图(患者、医生等参与

数据知道的博客 1349

iOS如何利用Delegate来实现两个UIView之间的传值

(推荐本人创建的一个iOS开源代码收集网站 Code4App) 两个View之间的传值可以有多种方式。但本人觉得最合理最自然并且最安全的方式是通过Delegate方式。 设想一个场景: 1. 有两个View,分别是A和B。 2. 点击A中的某个按钮,出来B。 3. 对B做某些操作(比如输入文字到textField,选择picker等等)。 4. 然后点击B中的确定按钮,将在B中进行的操

9462

TC3XX - MCAL知识点(四十二):AURIX™ TC3xx实现多相电机需要多核配合使用的场景与实操分析

本文探讨了多相电机控制系统中的关键技术问题,重点分析了多核处理器在电机控制中的应用。针对十二相电机等复杂应用场景,提出了同步采样、多核协同等解决方案。文章详细阐述了相电流同步采样原理及EBTresos配置方法,分析了ADC硬件触发机制和多核配合策略。通过Core0和Core1的协同工作设计,解决了位置信息采集与FOC算法执行的时序问题,并提供了代码实现示例。实验验证了采用ATOM0_7同时触发两个核ADC中断的可行性,为多相电机控制系统的实现提供了技术参考。

梦想技术家 494

YOLO系列算法改进 | C2PSA改进篇 | 融合BinaryAttention二值化注意力 | 轻量化与效率双提升,适用于高分辨率图像检测与边缘部署场景 | CVPR 2026

YOLO系列算法改进 | C2PSA改进篇 | 融合BinaryAttention二值化注意力 | 轻量化与效率双提升,适用于高分辨率图像检测与边缘部署场景 | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用C2PSA_BinaryAttention创新模块进行改进)

2502_91881744的博客 161

ios delegate传值

楔子 iOS里不同View之间传值有多种方式,常用的一种是delegate。具体如下: 概述 delegate典型应用场景如下:由OneView进入TwoView,在TwoView里输入值后,传回到OneView中。工程文件结构如下 步骤 1.定义delegate Xcode-File-New-File选择Objective-c File,点击next,在File Type:中选择Protocol,next后即可创建一个delegate。 #import <Foundation/Foundation

灿烂的博客 1568

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[IOS]Protocol协议及委托代理(Delegate)传值-用代码寻找storyboard相应视图

Protocol协议及委托代理(Delegate)传值前言:因为Swift是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。理解当一个类要使用某一个Protocol(协议)时,都必须要遵守协议。比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来

stary_yan的博客 1333

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

UI学习: 多界面传值的正向传值(属性传值)和反向传值(代理传值)

/ VCSecond.h # import < UIKit / UIKit . h > // 第一步:定义协议 @protocol VCSecondDelegate < NSObject > // 协议方法:B界面需要传值时调用这个方法 -(void) vcSecond :(id) vcSecond didSendText :(NSString *) text;

for_ever_love__的博客 228

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

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

iOS界面传值-代理传值

Vc1的导航控制器 VC3 同理 使用数组存储这两个视图,然后传值给Tabbar 点击了视图1 的空白处即跳转到了试图2 界面传值 我们可以从界面一点击空白处到界面二,那么要从界面二改变界面一的颜色就需要用到所说的界面传值 这里只会代理传值 注意:代理对象必须实现协议函数—不实现代理协议函数程序崩溃, 协议不提供方法的实现,体现了定义和实现分离的哲学原理! 点击按钮触发代理事件-设置把界面一改为redColor 在一级控制器(视图1.h)的遵守协议并再次声明协议的

weixin_61639290的博客 519

iOS 页面传值总结

1、属性传值 (1):属性传值第一步需要用到什么类型就定义什么样的属性 (2):从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页面推到下一个页面。 如:MainViewController与SecondViewContr...

chuxuelie4798的博客 113

iOS学习笔记-----使用代理(Delegate)的页面传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。当一个类要使用某一个Protocol(协议)时,都必须要遵守协议。比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来提醒你没有遵守××协议。注意,我这里说的是警告,而不

Maybe_Chen的博客 2313

iOS ViewController之间传值方法四(利用Delegate)

3.利用Delegate在两个或多个ViewController之间传值 在A界面       .h文件 @protocol secondViewDelegate -(void)passViewController:(NSString*)str;//1a.定义协议与方法 @end @interface ViewController : UIViewC

xuepan1994的博客 1936

关于 ios 页面信息传递方式 delegate 和 NSNotificationCenter

在ios 开发过程中经常的需要用到页面传值,主要有两种方式:Delegate(委托)以及NSNotification(通知)。 两种方式各有特点: (1)delegate,委托传递的消息会关注接收者的态度。 (2)NSNotification,只管将消息传递过去,而不理会接收者的态度。 新建一个.h头文件,定义一个协议; @protocol PassValueDelegate &...

anshansui2885的博客 115
上一篇: php的Mysqli封装类
下一篇: iOS协议实现多继承
浮生丿未歇
博客等级 码龄10年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值