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

SPAD 单光子雪崩二极管 SPAD,全称为,是一种高灵敏度的光电探测器件,能够在非常低的光照水平下检测单个光子。SPAD在工作时,当一个光子被探测器吸收后,能够触发一个雪崩效应,产生一个可以被检测到的电信号。 阅读详情

------- <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>



Android11车机系统海外项目资源包RRO方案优化 本文介绍了汽车设置应用如何通过Android RRO(运行时资源叠加)方案实现多车型差异化资源管理。针对不同车型(国内/海外、轿车/SUV)和配置(方向盘、轮毂等),采用产品变体(productFlavors)构建不同APK版本,并通过JSON配置文件动态启用对应资源包。系统根据车辆下线配置自动匹配适用的资源叠加包,解决了硬编码判断带来的维护问题。该方案实现了资源的高效复用,同时支持灵活配置多种车型组合,为汽车行业多车型共平台开发提供了可扩展的技术实现。 阅读详情

相关推荐

PX4笔记系列(二)vtol_att_control中的tiltrotor解析

update_vtol_state() 注释:采用两段切换的简单逻辑来进行过渡 当切换过渡开关后,飞机将会开始倾转动力,逐渐加速,当飞机获得足够速度后动力将会完全打到向前的位置。对于过渡返回阶段动力则是简单地倾转回来。 如果(不在向前过渡指令下): 当前vtol飞行模式: 1、旋翼模式 无操作 2、固定翼模式 令vtol飞行模式切换到过渡返回模式 3、P1过渡模式 进入过渡失败安全返回至旋翼模式 4、P2过渡模式 进入过渡失败安全返回至旋翼模式 5、过渡返回模式 记录过渡返回时间=当前时间-过渡开始

hypersonicss的博客 1881

黑马程序员_OC基础10_Protocol协议

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! 

u014433523的专栏 482

SARScape实战:集成GACOS数据优化InSAR大气校正全流程

本文详细介绍了如何在SARScape软件中集成GACOS数据,以优化InSAR大气校正的全流程。通过实战步骤,从GACOS数据申请、下载、导入,到在单景干涉图和SBAS-InSAR流程中应用,有效剥离大气相位延迟,显著提升形变监测结果的精度与可靠性,实现从“雾里看花”到“拨云见日”的转变。

weixin_28419039的博客 402

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

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——第一讲 protocol概念及基本使用什么是协议?定义一些方法的声明,.h头文件中,协议的作用:供其他类去遵守,如果一个类遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法。 起始大家一开始就明白字面上的协议的定义(通过百度就能够知道),但是关键时刻就是不知道什么时候用,用的流程是什么样子的,或者更主要

qq_27239329的博客 479

存储关键技术·RAID技术·RAID2.0·华为RAID2.0+·华为服务器·云计算

一.RAID基本概念 常见的RAID级别组合RAID级别 二.RAID的数据组织形式 三.RAID的数据保护功能 方法一:镜像方法二:奇偶校验算法(XOR) 四.RAID热备和重构 1.热备(Hot Spare)的定义2.热备的分类3.热备的工作原理 五.RAID 2.0技术 1.RAID 2.02.RAID 2.0+3.华为RAID 2.0+ 六.RAID 2.0+块虚拟化技术 1.什么会出现RAID 2.0+技术?2.什么是RAID 2.0?3.RAID 2.0+的原理是什么?

qq_47480932的博客 3320

卡门涡街可视化实战:从网格加密策略到动画后处理技巧

本文详细介绍了利用ANSYS Fluent进行卡门涡街可视化模拟的全流程,包括网格加密策略、求解器设置、涡街捕捉及动画后处理技巧。通过计算流体力学(CFD)方法,帮助工程师和研究人员高效模拟圆柱绕流现象,优化工程设计。

weixin_29309785的博客 414

黑马程序员-OC语言基础:协议

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------     一、      简单使用   1.       基本用途 Ø        可以用来声明一大堆方法(不能声明成员变量) Ø        只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 Ø        只要父类遵守了某个协议,就相当于子类也遵

SUIDONGYANG123的博客 435

基于强化学习框架的交易策略学习过程

每个状态s∈S 是一个由六个微观结构特征构成的向量,这些特征反映了当前市场的订单簿状态和近期交易行为。

xu624735206的博客 1112

黑马程序员_OC基础13_协议protocol

-------------------------------------android培训、java培训、期待与您交流! --------------------------------- 一、协议的概念 1、协议,类似于Java或C#语言中的接口,它限制了实现类必须拥有哪些方法。它是对对象行为的定义,也是对功能的规范。 2、协议声明了可以被任何类实现的方法 (不能声明成员变量) 3、协

程序媛coco的专栏 892

Ai数字人直播系统源码部署

虚拟形象定制,直播内容智能生成,多语言支持,智能互动,声音克隆,24 小时不间断直播,多平台直播,智能数据分析,实时情感识别,视频合成,Ai数字人直播系统源码出售,Ai数字人直播系统源码部署实现 AI 数字人 24 小时不间断直播功能是一个较为复杂的任务,涉及到多个方面,如直播流的推送、内容的持续生成、系统的稳定性保障等。以下为你提供一个简化的实现思路和示例代码,借助 Python 结合 FFmpeg 工具来模拟 24 小时不间断直播。

weixin_ggwwsscc的博客 1257

SAP-ABAP:SAP数据库视图的创建图文详解

在“短文本”字段中输入视图的描述。在“表/视图”字段中输入要基于的表名。如果视图基于多个表,可以在这里输入主表。点击“表/视图字段”按钮,选择要包含在视图中的字段。如果视图基于多个表,点击“关系”按钮来定义表之间的连接条件。在弹出的窗口中,选择要连接的表,并定义连接条件(例如。

baidu_35680696的博客 974

黑马程序员—OC语言基础—Block类型与Protocol协议小结

————————Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———————

编程之路 381

STM32F407+OV2640的DCMI+DMA双缓冲JPEG图像采集系统

在嵌入式视觉系统中,数字摄像头接口(DCMI)是MCU连接CMOS图像传感器的关键硬件通道,其与DMA协同实现零CPU干预的高速数据流采集;而JPEG作为一种基于DCT变换与量化压缩的有损图像格式,依赖传感器端硬件编码引擎才能满足实时性要求。理解DCMI三重同步时序(PCLK/HSYNC/VSYNC)与DMA双缓冲机制的流水线协作原理,是突破带宽瓶颈、避免FIFO溢出和帧丢失的技术基础。该架构广泛应用于智能硬件、工业检测与边缘AI前端等需低功耗、高可靠图像捕获的场景,本文以OV2640与STM32F407为

weixin_42103128的博客 157

黑马程序员 _10 OC基础 block 协议 代理

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! --------

liuthou的专栏 822

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

黑马程序员——ios开发基础之OC中的分类、协议、延展和代理

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 第一讲  分类与延展 1、分类概念及作用       Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类)       Category是OC特有的语法       类别的作用         再不修改原有的类的基础上增加新的方法         一个庞大的

Joker_999的博客 737

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

黑马程序员-IOS-OC基础-Block和协议

-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------

我的博客 638

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

黑马程序员---OC基础---Block、分类Category、协议protocol

黑马程序员---OC基础---Block、分类Category、协议protocol

Josh Pell的博客 805

黑马程序员——OC基础---分类(Category)、非正式协议及分类延展

黑马程序员——OC基础---分类(Category)、非正式协议及分类延展 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

abuzzworld的博客 516

黑马程序员-OC语言核心语法(1)

1. 点语法:对象调用方法       上述完整方法为- (void)setAge:(int)age;   1> 如何判断set和get方法:         如果赋值,则是set方法。                  eg:stu.age = 10;         否则是get方法。                   eg :  int age =

wlwl363的专栏 430

黑马程序员————OC基础学习重要小知识点总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、首先,什么是Objective-C?     Objective-C是一门基于C语言的面向对象语言,C语言的基础上,增加了一层最小的面向对象语法,完全兼容c语言,它在现代计算机的主要作用于Mac OS X作为桌面语言以及作用于iPhone OS(亦称:iOS)。它原是Ne

whymerain的专栏 873

黑马程序员_OC协议

在Object-C中,委托和数据源都是由协议实现的。协议定义了一个类与另一个类进行沟通的先验方式。它们包含一个方法列表,有些是必须被实现的,有些是可选的。 任何实现了必需方法的类都被认为符合协议。

suiyuan78223的专栏 782

——黑马程序员——OC中正式协议protocol的用法总结

-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------

yhp1095785221的博客 645

黑马程序员-IOS-OC基础-OC简介及基本语法

-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------  OC简介:OC是Objective-C的简称,OC是在C语言的基础上,增加了一层最小的面向对象语法;完全兼容C语言;可以在OC代码中混入C语言代码,甚至C++代码;可以使用OC开

qq_25027273的专栏 467

黑马程序员-OC语言协议Protocol

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1.概念 1>协议(Protoco)是一系列方法的列表,其声明的方法可以被任何类实现,一般称为代理模式。 2>在.h文件中@protocol声明存在协议,跟@class一样 2.作用: 1>可以声明很多方法,但是不能声明成员变量。 2>如果某个类遵守了某个协议,则这个

wlwl363的专栏 596

黑马程序员——iOS核心基础(17-18天)-黑马程序员-专题视频课程

C语言基础17-18天。其中包括OC类和对象创建、类方法和Xcode

heima_cxy的博客 292

[黑马程序员][OC]协议

------Java培训、Android培训、iOS培训、.Net培训期待与您交流! ------- 在Object-C中,委托和数据源都是由协议实现的。协议定义了一个类与另一个类进行沟通的先验方式。它们包含一个方法列表,有些是必须被实现的,有些是可选的。任何实现了必需方法的类都被认为符合协议。 1. 基本用途 1>可以用来声明一大堆方法(不能声明成员变量) 2>只要某个类遵守了这个协

sajiner的专栏 378
上一篇: 黑马程序员——OC基础---构造方法
下一篇: 黑马程序员——OC基础---分类(Category)、非正式协议及分类延展
abuzzworld
博客等级 码龄18年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值