黑马程序员——OC基础---协议

本文深入探讨了Objective-C中的协议机制,包括协议的概念、作用、定义方式、类遵守协议的方式、协议之间的继承关系以及协议作为类型限定的使用场景。

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------


     1 -  概念

 

      一些方法的声明(注意:只是声明,没有实现!!同时也没有成员变量!!),一般写到一个.h的头文件中(command+n ->socre->->Objective-C File->File Type选择Protocol)。

       方法分为两种:

 

       1) 必须实现    关键字  @required 同时也是默认关键字

       2) 选择实现    关键字  @optional

 

     2 - 作用:

 

       供其他的类去遵守

      如果一个类或遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法

 

     3 - 定义:

 

       @protocol 协议名 <NSObject>  //默认情况下遵守 NSObject协议

        //方法列表

       @end

<span style="font-family:SimHei;font-size:18px;">@protocol testOneProtocol <NSObject>
@required//必须实现的方法
-(void)methodA;


@optional//可选择实现的方法
-(void)methodB;
@end</span>


     4 - 类遵守协议的格式:


       1) 遵守一个协议:

 

         先导入协议头文件

 

       @interface类名 :NSObject <协议名>

 

       @end

<span style="font-family:SimHei;font-size:18px;">#import <Foundation/Foundation.h>
#import "testOneProtocol.h"
@interface Girl : NSObject<testOneProtocol>

@end</span>


 

       2) 遵守多个协议 

         @interface类名 :NSObject <协议名1,协议名2,...,协议名n>

         

         @end

<span style="font-family:SimHei;font-size:18px;">#import <Foundation/Foundation.h>
#import "testOneProtocol.h"
#import "testTwoProtocol.h"
@interface Student : NSObject<testOneProtocol,testTwoProtocol>

@end</span>



3)协议与协议的继承

<span style="font-family:SimHei;font-size:18px;">@protocol testOneProtocol <NSObject>
-(void)methodA; 
@end
@protocol testTwoProtocol <testOneProtocol> 
-(void)methodB;
@end</span>



如果你遵守了testTwoProtocol协议,那么methodA和methodB都需要实现。

NSObjct协议是基础协议,如果你的自定义协议不需要遵守其他的协议,如上例testOneProtocol,那么请遵守NSObject协议

4)协议被父类A遵守后被子类B继承

父类A遵守协议后实现协议必须实现的方法,这些方法可以被A的子类继承,A的子类可以调用或者重写父类准售的协议

类与协议的关系可以简单总结为三句话

1) 一个协议,可以遵守其他的协议 

2) 一个类可以遵守多个协议  

3) 一个协议可以被多个类遵守

5协议作为类型限定使用

<span style="font-family:SimHei;font-size:18px;">Dog *d = [Dog new];
Girl *g = [Girl new];
        
//第一种类型限制
id<houseHold> obj;
//增加<houseHold>以后,表示,obj只能赋值遵守了houseHold协议的对象
id<houseHold> obj = d;
        
// 第二种类型限制:
//表示,obj2在被赋值的时候,必须是遵守了houseHold协议的Girl对象.
Girl<houseHold> *obj2 = g;</span>


第三种类型限制

<span style="font-family:SimHei;font-size:18px;">#import <Foundation/Foundation.h>
#import "Dog.h"
#import "houseHold.h"
#import "caculatorProtocol.h"
@interface Girl : NSObject<houseHold>

//要求该实例变量必须是遵守了caculatorProtocol协议的Dog对象
@property (nonatomic,strong) Dog<caculatorProtocol> *dog;
@end</span>



光伏储能虚拟同步发电机VSG并网仿真模型(Similink仿真实现)内容概要:本文档介绍了光伏储能虚拟同步发电机(VSG)并网仿真模型的Simulink实现方法,重点在于通过建立光伏储能系统与虚拟同步发电机相结合的仿真模型,模拟其在并网过程中的动态响应与控制特性。该模型借鉴了同步发电机的惯性和阻尼特性,提升了新能源并网系统的频率和电压支撑能力,增强了系统的稳定性与可控性。文档还提及相关电力系统仿真技术的应用,包括逆变器控制、储能配置、并网稳定性分析等,并提供了完整的Simulink仿真文件及技术支持资源链接,便于科研人员复现与二次开发。; 适合人群:电气工程、自动化、能源系统等相关专业的研究生、科研人员及从事新能源并网技术开发的工程师。; 使用场景及目标:①用于研究光伏储能系统在弱电网条件下的并网稳定性问题;②掌握虚拟同步发电机(VSG)控制策略的设计与仿真方法;③支持高水平论文(如EI/SCI)的模型复现与创新研究;④为微电网、智能电网中的分布式能源接入提供技术参考。; 阅读建议:建议结合提供的Simulink模型文件与文档说明逐步操作,重点关注VSG控制模块的参数设置与动态响应分析,同时可延伸学习文中提及的MPPT、储能管理、谐波分析等相关技术,以提升综合仿真能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值