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

告别手动发日报!用n8n+钉钉打造智能报告机器人(含模板下载) 本文详细介绍了如何利用n8n开源工作流自动化平台与钉钉机器人搭建智能日报系统,实现数据自动采集、处理和发送。通过实战步骤和模板下载,帮助用户告别手动处理日报的繁琐,提升工作效率和数据准确性。 阅读详情

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



innovus: 如何让两个generate clock balance skew group? 如题,在sdc约束中两个generate clock被设置到同一个clock group中,工具虽然会生成对应的两个skew group,但是阅读ccoot_spec发现工具并没有让两个skew group进行balance,这时就需要手动设置balance skew group。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 阅读详情

相关推荐

MATLAB实战:手把手教你搭建构网逆变器同步稳定性仿真模型(附避坑指南)

本文详细介绍了如何在MATLAB/Simulink平台上搭建构网逆变器同步稳定性仿真模型,涵盖从基础模块配置到虚拟同步机控制实现的完整流程。针对电力电子工程师常见的控制参数整定困难、仿真结果偏差等问题,提供了LCL滤波器谐振抑制、虚拟惯量优化等关键技术解决方案,并附有避坑指南和工程实践技巧,助力研究者高效完成仿真建模。

weixin_29051193的博客 298

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

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

u014433523的专栏 482

UVM(5)-TLM通信

TLM是一种基于事务 (transaction) 的通信方式,通常在高抽象级语言例如SystemC或者SV/UVM中作为模块之间的通讯方式。

2301_76431006的博客 2106

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

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

qq_27239329的博客 479

vue3 - 详细实现视频/图片/图文“响应式瀑布流“列表布局示例代码,手机移动端H5或PC端电脑网页根据屏幕宽度自适应响应式瀑布流效果,支持数据列表动态懒加载,仿小红书图文视频div容器的瀑布流方案

vue3,nuxt3,瀑布流,响应式,图片瀑布流,视频瀑布流,图文瀑布流,手机移动端,H5瀑布流,电脑PC网站,手机电脑都能用的瀑布流布局,屏幕自适应,最好用的瀑布流组件插件,滚动分页加载瀑布流列表,瀑布流效果,自适应瀑布流布局详细教程,动态加载数据,懒加载,小红书,图文列表,视频列表,列表容器高度不一致怎么排列,整个屏幕全是宽高不固定的div容器列表怎么办,移动端和pc端双端实现瀑布流,vue3实现图片瀑布流布局以及响应式,滚动条触底懒加载,组件插件,vue3瀑布流 电脑手机都能用,解决卡顿不流畅,对不齐

✅ 精选推荐文章 4340

用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

xiaoheshang_123的博客 282

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

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

SUIDONGYANG123的博客 435

USB驱动(URB)

本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。

m0_49476241的博客 915

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

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

程序媛coco的专栏 892

【精品5万字图文详解】特征平台建设方案与最佳实践

关键词:特征工程、特征平台、特征存储、特征服务、机器学习、数据工程摘要:本文全面介绍了特征平台的建设方案与最佳实践,从特征工程的基本概念出发,深入剖析了特征平台的核心组件、架构设计和实现方法。文章通过生动的类比和实例,使读者能够轻松理解特征工程的重要性及特征平台如何解决企业在机器学习过程中面临的数据管理挑战。同时,详细探讨了主流开源特征平台的对比分析、系统设计要点、实际落地案例以及未来发展趋势,为企业构建高效特征平台提供了全面的指导和参考。想象一下,小明是一位热爱烹饪的小学生。有一天,他想做一道美味的菜肴送

AI天才研究院 954

060、模型蒸馏:把扩散模型压进单步的魔法

《端侧文生图模型蒸馏实战:从32步到1步的优化之道》摘要:针对边缘设备部署难题,本文分享了扩散模型蒸馏的核心经验。通过重构损失函数(感知损失+对抗训练+KL散度)、优化采样轨迹截取策略和改造学生模型架构,成功将Stable Diffusion压缩至单步推理。关键发现包括:小批量训练更有效、标签平滑保障生成多样性、双模型策略平衡质量与速度。在Cortex-A53芯片上实现300ms内生成,内存占用控制在200MB以下。特别强调工业部署需权衡压缩率与稳定性,建议保留迭代模式开关以适配不同场景需求。

2601_95651806的博客 150

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

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

编程之路 381

电源防反接保护电路全攻略实战A04

本文深入剖析了硬件设计中电源保护电路的关键技术与实战经验。文章指出,保护电路虽小但至关重要,通过对比分析二极管与MOSFET防反接方案,揭示了MOSFET在效率、温控方面的优势。针对过压保护,重点讲解了TVS二极管选型要点,强调钳位电压而非击穿电压才是保护核心。文章结合工业案例(如48V通信模块烧毁、5V系统MOSFET过热等),详细阐述了PCB布局规范、热设计路径等工程细节,并提供了USB接口ESD防护的完整选型方案。最后强调硬件设计必须考虑最坏工况,在成本与性能间找到平衡点,避免因小失大。

启芯硬件的博客 778

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

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

liuthou的专栏 822

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

Joker_999的博客 737

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

我的博客 638

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

黑马程序员---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、付费专栏及课程。

余额充值