iOS开发之protocol和delegate

基于强化学习控制策略的三相逆变器仿真 强化学习控制器的核心在于定义状态空间、动作空间、奖励函数以及选择合适的强化学习算法(例如DQN、DDPG等)。对于三相逆变器,状态可以是输出电压、电流等信息;动作则可能是调制指数的变化量;奖励函数则应鼓励快速准确地跟踪参考信号。定义状态空间动作空间状态空间可以包括逆变器的输出电压、电流及其变化率等信息。动作空间则是控制器可执行的动作,例如PWM信号的调整幅度。matlab深色版本% 定义状态动作空间维度numObs = 6;% 假设有六个状态变量(例如三相电压电流) 阅读详情

 protocol——协议

协议是用来定义对象的属性,行为和用于回调的。
    协议中有两个关键字@private和@optional,@private表示使用这个协议必须要写的方法,@optional表示可选的方法,用不到可以不写。
就像UITableView,它有两个协议:UITableViewDelegate和UITableViewDataSource,UITableViewDelegate是规定行为操作的,里面的方法都是可选的方 法,UITableViewDataSource是规定数据存储结构的,有两个必选方法。因此你再实现UITableViewDataSource时必须要定义这两个方法,否则程序会出错。
如果你使用了响应的类或者控件,如果该类定义了协议,就可以根据需要实现该协议。


protocol和java里interface的概念类似,是Objective-C语法的一部分。
定义protocol如下
@protocol ClassADelegate
 
- (void)methodA;
- (void)methodB;
 
@end

那么就是定义了一组函数,这组函数放在一起叫作一个protocol,也就是协议。

函数是需要被实现的,所以如果对于class如下

@interface ClassB <ClassADelegate> {
}
@end

就叫作ClassB conform to protocol ClassADelegate,也就是说ClassB实现了这个协议,
也就是实现了这一组函数。

有了上面这个头文件,我们就可以放心作调用

ClassB *b = [[ClassB alloc] init];
[b methodA];
[b methodB];

而不用担心出现unrecognized selector sent to instance这种错误了。

所以protocol就是一组函数定义,是从类声明中剥离出来的一组定义。

id<ClassADelegate> b = ...;
[b methodA];

这种用法也常见,b是一个id类型,它知道ClassADelegate这组函数的实现。


delegate——委托,代理

适用场合:
类A调用类B, 当类B想回调类A的方法的时候, 要用到delegate
要理解下面的代码的话, 要知道的一个知识点是 协议(protocal)

文件:ClassA.h
#import <Foundation/Foundation.h>
#import "ClassB.h"
@interface ClassA : NSObject<SampleProtocal>
- (void)test;
@end


文件:ClassA.m
#import "ClassA.h"
@implementation ClassA


-(void)test{
    ClassB *classB = [[ClassB alloc] init];
    classB.delegate = self;
    
    [classB actionOfClassB];
}


-(void)callback{
    NSLog(@"这个方法会被类B调用");
}
@end


文件:ClassB.h
#import <Foundation/Foundation.h>

@protocol SampleProtocal <NSObject>
@required
- (void)callback;
@end


@interface ClassB : NSObject{
    id<SampleProtocal> delegate;
}
@property (nonatomic, retain) id<SampleProtocal> delegate;


- (void)actionOfClassB;


@end


文件:ClassB.m
#import "ClassB.h"


@implementation ClassB
@synthesize delegate;
-(void)actionOfClassB{
    [delegate callback];
}
@end


利用PaddleOCR识别增值税发票平台验证码(开箱即用) 下面直接讲解利用paddleocr识别的思路,为什么使用paddleocr,因为paddle中集成了较好的ocr文字识别模型,开箱即用即可,废话不多说,剑指主题,识别思路步骤如下。 阅读详情

相关推荐

iOS之协议protocol

用代码清晰的解释了协议的用法与使用场景,以及各个类之间用协议protocol通信的规则。欢迎来学习,同时希望提出意见共同进步

iOSProtocol详解

目录 一,作用 二,基本使用 三,特点 四,应用场景 五,系统协议 六,底层代码 一,作用 1,公开方法一般都放在.h文件中,如果想隐藏实现细节,可以把这些方法放到协议中,再让该类遵守此协议(一个协议对应一个类) 2,将一些公共方法抽取出来封装成协议,任何类想拥有这些方法,只需遵守此协议即可(一个协议对应多个类) 问题:公共方法为什么不放在父类中? 答:下图中D类跟E类的公共方法可以放在父类B中,但D类跟G类的公共方法放在父类的父类A中显然是不合适的,这时协议就能很优雅的解决 ..

小天空的博客 2166

GJB_Z299B手册下载[源码]

《GJB_Z299B电子设备可靠性预计手册》是电子设备可靠性领域的权威参考资料,适用于电子设备设计、制造、测试维护的专业人员。手册详细介绍了可靠性预计的方法、流程标准,涵盖从设计到应用的各个环节。其内容包括基本原理、数学模型、数据分析方法及实际案例,旨在帮助读者系统地进行可靠性评估。手册适用于设计、制造、测试、维护及科研教学等多个场景,具有权威性、全面性、实用性互动性等特点,是电子设备可靠性工程师科研人员的必备工具。

JavaScript中的对象,入职3个月的前端程序员面临转正,四轮面试后多久出结果

如果你已经下定决心要转行做编程行业,在最开始的时候就要对自己的学习有一个基本的规划,还要对这个行业的技术需求有一个基本的了解。有一个已就业为目的的学习目标,然后为之努力,坚持到底。如果你有幸看到这篇文章,希望对你有所帮助,祝你转行成功。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)一个人可以走的很快,但一群人才能走的更远!

2201_75604580的博客 898

iOS中使用协议(protocol)的用法

协议在ios中是代理一块成双成对的使用的.在后面的UI阶段我们会经常遇见,如,datable... 如何定义一个自己的协议尼.列位上眼呐! 1.协议的表示:@protocol 2.如何创建一个协议文件步骤如下: New File->OS X ->Cocoa ->Objective-c protocol.然后输入一个协议的名称.可以随便起.咱们这里叫(CarsStandar...

whuizhou的专栏 4807

protocol(协议)、delegate(代理)

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

Jian_Ze的博客 277

iOS开发之OC入门(协议、代理)

协议:protocol 专门用来声明一大堆方法,不能声明属性,也不能实现方法,只能用来写方法的声明 只要某个类遵守这个协议,就相当于拥有这个协议中的所有方法声明 @protocol 协议名称 <NSOject> 方法的声明; @end ...

weixin_46926959的博客 1558

iOS开发Protocol (协议) delegate(代理)

一、Protocol(协议) protocoldelegate完全不是一回事。 协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现 protocol就是一组函数定义,是从类声明中剥离出来的一组定义。 委托(delegate),顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理。 Delegat

lilianyou163的专栏 970

浅谈iOS开发的协议(protocol)代理(delegate)

协议代理对于一个新手来说确实不讨好理解,也有很多的iOS开发的老手对此是懂非懂的。网上的很多博文只是讲了怎么使用,并没有说的很明白。下面我谈一下我的理解。 1.你要先搞明白,协议代理为什么会出现,也就是说它存在的意义是什么,解决了什么问题。 协议代理是模块化开发封装的产物。 先讲一个小故事帮助大家理解: 老王有一家餐馆,刚刚开始的时候规模很小,所以老王一个人做了所有的事情:扫地,做菜,迎...

weixin_30323961的博客 86

[iOS]delegateprotocol

[iOS]delegateprotocol Posted on 2011/08/26 今天上班同事讨论工程怎么组织的时候涉及到这个话题。 iOS开发上对delegate使用广泛。 记在这里,如果有新人Google到了,希望能有点帮助。 protocoldelegate完全不是一回事,放在一起说,只是因为我们经常在同一个头文件里看到这两个word。 protoc

h2811988的专栏 666

ios delegate

http://write.blog.csdn.net/postedit

zfq_jxj的专栏 661

delegateprotocol

protocoldelegate完全不是一回事,放在一起说,只是因为我们经常在同一个头文件里看到这两个word。 协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。 委托(delegate),顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理。 举个浅显的例子: ...

agcsdn2015的博客 152
上一篇: IOS 应用程序生命周期
下一篇: IOS 小技巧积累(持续更新)
Mars2639
博客等级 码龄16年 227粉丝 18原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值