iOS (页面间传值)协议和代理的使用 protocol delegate

iOS开发:Protocol协议以及委托代理传值 由于OC不支持多继承,所以在很多时候都是要用Protocol协议来代替。Protocol协议只能定义公用的一套接口,不能提供具体的实现方法。也就是说只告诉需要做什么,但具体怎么实现需要另外实现操作。        当一个类要使用某一个Protocol协议时,都必须要遵守协议。如果有些必须要实现的方法,你没有实现,编译器就会报警告来提醒你没有遵守未实现的协议。这仅仅是警告而不是报错,也就是说你 阅读详情

最近搜关于协议和代理使用相关内容的时候发现雷同太多,这篇是很早前整理的我已经记不清是自己修改过了的,还是直接在往上复制下来的,不过感觉介绍还是蛮细致的

1、首先定义个一委托UIViewPassValueDelegate用来传递值

1. @protocol UIViewPassValueDelegate 
2. - (void)passValue:(NSString *)value; 
3. @end 

这个protocol 就是用来传递值

2、在窗口1的头文件里,声明delegate

1. #import <UIKit/UIKit.h> 
2. #import "UIViewPassValueDelegate.h" 
3. @interface DelegateSampleViewController : UIViewController <UIViewPassValueDelegate> 
4. {  
5.     UITextField *_value; 
6. }  
7. @property(nonatomic, retain) IBOutlet UITextField *value; 
8. - (IBAction)buttonClick:(id)sender; 
9. @end 

并实现这个委托

1. - (void)passValue:(NSString *)value 
2. {  
3.   self.value.text = value;  
4.     NSLog(@"the get value is %@", value); 
5. } 

button的Click方法,打开窗口2,并将窗口2的delegate实现方法指向窗口1。

1. - (IBAction)buttonClick:(id)sender 
2. {  
3.     ValueInputView *valueView = [[ValueInputView alloc] initWithNibName:@"ValueInputView" bundle:[NSBundle mainBundle]]; 
4.     valueView.delegate = self;  
5.     [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
6.     [self presentModalViewController:valueView animated:YES]; 
7. } 


第二个窗口的实现

.h 头文件

1. #import <UIKit/UIKit.h> 
2. #import "UIViewPassValueDelegate.h" 
3.  
4. @interface ValueInputView : UIViewController { 
5.  
6.     NSObject<UIViewPassValueDelegate> * delegate;  
7.     UITextField *_value; 
8. }  
9. @property(nonatomic, retain)IBOutlet UITextField *value; 
10.@property(nonatomic, retain) NSObject<UIViewPassValueDelegate> * delegate;  
11.- (IBAction)buttonClick:(id)sender; 
12.@end 

.m实现文件

1. #import "ValueInputView.h" 
2. @implementation ValueInputView 
3. @synthesize delegate; 
4. @synthesize value = _value;  
5. - (void)dealloc { 
6.     [self.value release]; 
7.     [super dealloc]; 
8. }  
9.  
10.- (IBAction)buttonClick:(id)sender 
11.{  
12.    [delegate passValue:self.value.text]; 
13.    NSLog(@"self.value.text is%@", self.value.text); 
14.    [self dismissModalViewControllerAnimated:YES];     
15.    
16.}  
17.- (void)didReceiveMemoryWarning { 
18.    // Releases the view if it doesn't have a superview. 
19.    [super didReceiveMemoryWarning]; 
20.     
21.    // Release any cached data, images, etc. that aren't in use. 
22.}  
23. 
24.- (void)viewDidUnload { 
25.    [super viewDidUnload]; 
26.    // Release any retained subviews of the main view. 
27.    // e.g. self.myOutlet = nil;  
28.}  
29. 
30./*  
31.// Only override drawRect: if you perform custom drawing. 
32.// An empty implementation adversely affects performance during animation. 
33.- (void)drawRect:(CGRect)rect { 
34.    // Drawing code. 
35.}  
36.*/  
37.@end 


 

RxSwiftProject:迅捷RxSwift + Moya + MVVM RxSwift + Moya + MVVM 项目使用了QMUI框架 ,使用时的配置: 查看“如何使用配置表”一栏 如果报错 "No type or protocol named 'QMUIConfigurationTemplateProtocol'", 请在QMUIConfigurationTemplate.h中#import <QMUIKit> 立即下载

相关推荐

联邦学习模型投毒研究进展

在联邦学习中,多个设备(如移动设备、IoT设备等)本地训练模型,然后将更新的模型参数上传到服务器进行聚合。

2401_82375734的博客 1266

ReactNative进阶(二十三)error: no type or protocol named ‘RCTBridgeModule’问题修复

Jenkins初步怀疑是依赖包缺失导致,通过将之前的备份依赖包替换至现有项目中,问题得以解决😂。

IT全栈 华强工作室 776

别再死记硬背公式了!用Unity ShaderGraph从零实现一个皮肤SSS效果(附完整节点图)

本文详细介绍了如何利用Unity ShaderGraph零代码实现皮肤次表面散射(SSS)效果,包括背光透射(BTDF)和表面散射(BSSRDF)的核心原理与节点构建方法。通过可视化工具,技术美术师和Shader初学者可以直观理解光线在皮肤组织中的散射行为,快速创建真实的皮肤材质效果,适用于游戏角色渲染等场景。

weixin_30838873的博客 591

iOS 使用协议委托遇到的一个小问题

今天做了个项目,里面使用到相同布局的多个TableView,然后就想,自定义UITableViewCell,再加到各个UITableView上。在cell上加了几个按钮,按钮的实现方法要写在UITableView所在的控制器里,这里需要使用协议,将按钮要实现的方法写到协议里,控制器遵守协议,实现按钮的方法。但是总是报错,研究了好长时间,才发现问题所在。原因是:     [self.wish add

bluesky903的专栏 695

TongWeb微服务部署实战:Nacos注册与网关路由的疑难解析

本文分享了将Spring Cloud微服务迁移至TongWeb应用服务器时,解决Nacos服务注册失败与Spring Cloud Gateway路由失效的实战经验。针对Nacos注册问题,通过实现ApplicationRunner接口并利用JMX获取容器端口,实现了手动注册;针对网关路由问题,建议将基于WebFlux的Gateway模块改为JAR包独立部署,以保障其原生运行环境。文章为在TongWeb上进行微服务部署提供了关键的问题排查思路与混合架构部署的最佳实践。

weixin_29209801的博客 240

双通道中频信号数字下变频及相位差估计(FPGA)

双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1...

qq_39809425的博客 6942

ios使用theos tweak logify.pl自动hook .h头文件中所有的方法

文章目录配置theos环境变量手动在tweek里打印一个函数的信息使用logify.pl自动生成一个.h文件中的所有函数的打印信息 配置theos环境变量 theos文件夹下的bin,下有一个logify.pl 把这个 theos/bin添加到系统环境变量里,就可以在任意位置使用这个pl文件 执行命令 open ~/.zshrc 添加一行: export PATH="theos的路径/theos/bin:$PATH" 然后让环境变量生效 source ~/.zshrc 手动在tweek里打印一个函数的

小手琴师的博客 1453

无法找到来自源 nvlddmkm 的事件 ID 14 的描述

具体错误是: 无法找到来自源 nvlddmkm 的事件 ID 14 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 出现这样错误的原因有很多了,有可能是硬件有可能是软件。由于我是刚配置的电脑,起初非常怀疑是自己组装的问题,折腾了好久,心态爆炸!!!先说我报这样错误的情况,以及解决办法,供后面人参考。 ...

SeventhBlue 6万+

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

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

Maybe_Chen的博客 2313

7.26华为OD机试真题 新系统 - 炸弹人的雷区数量 (Java/Py/C/C++/Js/Go)

7.26华为OD机试真题 新系统 - 炸弹人的雷区数量 (Java/Py/C/C++/Js/Go)

算法大师! 793

【YOLOv8改进 - 注意力机制】GAM(Global Attention Mechanism):全局注意力机制,减少信息损失并放大全局维度交互特征

为了提高各种计算机视觉任务的性能,研究了多种注意力机制。然而,现有方法忽视了保留通道和空间两个方面信息的重要性,以增强跨维度的交互。因此,我们提出了一种全局注意力机制,通过减少信息损失和放大全局交互表示来提升深度神经网络的性能。我们引入了带有多层感知器的3D排列用于通道注意力,同时结合了卷积空间注意力子模块。在CIFAR-100和ImageNet-1K上的图像分类任务评估中,表明我们的方法在ResNet和轻量级MobileNet上稳定地优于几种最新的注意力机制。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1158

iOS-Protocol(协议)和Delegate(代理)

1.基础原理 我们平时说的代理其实分为Protocol(协议)和Delegate(代理)两个部分。 协议不是代理,代理不是协议。 协议是多个类之间协商的一个公共接口,这个公共接口提供一系列方法的声明给其他类使用。 代理是协议的应用机制。 代理通俗来说就是我自己不方便去做的一些事(协议里定义的方法),我需要委托其他人来做这些事。我就是委托方,对方就是被委托方。 举个栗子: 一个View...

SunSatan的博客 637

制作3D地形图的方法-使用GlobalMapper和3ds Max软件

打开GlobalMapper软件,在菜单栏中选择“文件”>“打开数据文件”,然后选择相应的高程数据文件。在菜单栏中选择“渲染”>“渲染设置”,根据需要进行设置,如分辨率和输出格式。选择地形对象,点击菜单栏中的“渲染”>“材质编辑器”,然后根据需要调整材质属性,如颜色、纹理和光照等。在菜单栏中选择“工具”>“高程栅格和网格”>“创建地形网格”。在菜单栏中选择“文件”>“导出”>“导出栅格格式”。打开3ds Max软件,在菜单栏中选择“文件”>“导入”,然后选择之前导出的地形数据文件。步骤3:导出地形网格。

JqlScala的博客 1535

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

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

stary_yan的博客 1333

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IOS开发-Protocol协议及委托代理(Delegate)传值

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

zhuobi0的专栏 458

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

iOS swift 代理 delegate protocol 和 通知(NSNotification)

文章目录参考博客: 参考博客: iOS swift 代理协议

baidu_40537062的博客 1246

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

for_ever_love__的博客 228

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

iOS开发-Protocol协议及委托代理(Delegate)传值

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

Keep_Moving31038的博客 392

protocol(协议)、delegate(代理)

protocol(协议)、delegate(代理) 一、protocol(协议) 1.概念:把多个类中的某些共同属性、方法抽象到一个类中,但这些属性、方法在不同的类中有不同的实现,相当于Java中的接口。协议只有声明,没有实现。使用者只需要遵守这个协议 ,就可以得到这个协议里面声明的方法 2.创建一个协议 如Test.h #imp...

Jian_Ze的博客 282

【IOS】委托(delegate)和协议(protocol)

iOS的委托模式之前也接触过,总觉得自己理解的不够透彻,使用时磕磕绊绊,今天做一个有关协议和委托模式的总结 协议(protocol) 由于Objective_C的类不支持多继承,而类在实现时很多相似的方法,所以我们把某个类应该实现的一系列方法定义在一个叫协议(Protocol)的特性里面,若某类遵循了此协议(Protocol),就可以实现该协议(Protocol)里包含的方法,但并不一定要全部实现Protocol里声明的方法,其方法的实现一般都是可选的(@optional),若检查@optional的方法是

YUANdeboke的博客 2739

UI学习: 反向传值(代理传值)深入学习

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

for_ever_love__的博客 437

协议(Protocol) 和代理(Delegate)

1、概念与组成 delegate是iOS中一种常见的设计模式,是一种消息传递的的方式,常见的消息传递方式还有以下几种: 通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式。 代理:是一种通用的设计模式,iOS中对代理支持的很好,由代理对象、委托者、协议三部分组成。 block:iOS4.0中引入的一种回调方法,可以将回调处理代码直接写在block代码块中,看起...

weixin_30323961的博客 280
上一篇: 我要做哪一只苹果虫?
下一篇: Objective-C的运行时机制,反射机制
明理明智
博客等级 码龄15年 7粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值