iOS协议实现多继承

iOS面试现场,笔试提高题详解 现在已经不断有网友发我他们在面试中遇到的面试题,这是一位程序媛前面在面试中遇到的问题 前面两个过于基础,从提高题开始分享;个人见解,勿喷 持续关注:请叫我Hank,持续输出各大公司iOS面试系列文章,欢迎广大程序猿找我投稿面试中碰到的面试题,我会给你一份我的见解和答案,前面已经分享100道我招聘的面试题,加入下方iOS技术交流群624212887直接获取 题一:what is purpose... 阅读详情


1、单继承中父类可以声明成员变量和方法,子类继承父类之后,子类会继承父类所拥有的成员变量和成员方法,子类可以不写父类的方法。

2、协议中不可以声明变量,只能声明方法,然后由遵守协议的类实现方法

3、因为一个类中可以遵守多个协议,所以一个类中可以继承多个类的方法,但是实现则要在本类中实现。(协议多继承的本质)

ps:总的来说单继承可以继承父类的属性方法并且不用重写父类方法可以使用,但协议多继承只能继承方法,并且要重写协议方法,可以理解成tableView这种类型的控件。


接下来是实例:(参考链接https://my.oschina.net/u/2410306/blog/522755)


#import <Foundation/Foundation.h>

@protocol Add <NSObject>

- (int)addA:(int)a b:(int)b;

@end


#import <Foundation/Foundation.h>

@protocol Sub <NSObject>

- (int)subA:(int)a b:(int)b;


@end

#import <Foundation/Foundation.h>

@protocol Mul <NSObject>

- (int)mulA:(int)a b:(int)b;

@end

==================================================以上是三个协议下面是新建一个继承与NSObject的计算类Calculator

#import <Foundation/Foundation.h>

#import "Add.h"

#import "Sub.h"

#import "Mul.h"


//遵守多个协议//类似于c++的多继承

@interface Calculator : NSObject <Add,Sub,Mul>

@end

#import "Calculator.h"

@implementation Calculator

- (int)addA:(int)a b:(int)b

{    return a+b;

}

- (int)subA:(int)a b:(int)b {

    return a-b;

}

- (int)mulA:(int)a b:(int)b {

    return a*b;

}

@end


==========================================

#import <Foundation/Foundation.h>

#import "Calculator.h"


/* 现在有多个类,一个是加法器类(会算加法) 第二个类是减法器类(减法功能)第三个乘法器类(乘法)  实现一个类分别可以进行+-c++可以用多继承实现但是OC没有多继承 但是OC可以通过协议来实现 */

int main(int argc,const char * argv[])

{    @autoreleasepool

    {

        Calculator *calc = [[Calculator alloc] init];

        NSLog(@"%d",[calc addA:1 b:1]);//2

        NSLog(@"%d",[calc subA:1 b:1]);//0

        NSLog(@"%d",[calc mulA:1 b:1]);//1

    }  

    return0;}

}


谈谈iOS中的多继承与多重代理 前言 多继承和多重代理在swift的语言层面上是不支持的,但我们有时会遇到这样的问题: 类B和C分别继承自A,B1和B2继承自B,C1和C2继承自C.现在我们需要在B1和C1中添加相同的方法,怎么去做?使用继承的话只能在类A中添加,但这样做的结果是基类A会越来越臃肿,最后变成上帝类God Class,维护起来会很困难. 在实现完某个代理后发现,我们还要在其他页面中获取数据.例如,IM消息接收之后要在多个地方做回调,比如显示消息内容页面,改变小红点,显示消息数.即一对多的模式,我们第一反应是用通知,但通知还是能少用就少用,用多了代码的可阅读性会大大降低. 面对第一种情况,最好的解决方法是 立即下载

相关推荐

手把手教你用ADS和CGH40010F模型搭建Doherty功放仿真原型(附工程文件)

本文详细介绍了如何使用ADS软件和CGH40010F GaN器件模型搭建Doherty功放仿真原型,涵盖工程准备、关键电路模块实现、效率优化技巧及常见问题排查。通过实战指南和效率优化技巧,帮助工程师快速掌握Doherty功放设计,提升5G基站和广播发射系统的功率放大器性能。

weixin_26897585的博客 344

iOS 多继承四种实现方式

参考博客 协议和 NSProxy 实现多继承 文章目录参考博客1. 组合方式实现2. 通过协议实现3. 通过分类和三次拯救中的第二次拯救4. 协议和NSProxy实现NSProxy: 多继承可以允许子类从多个父类派生,而Objective-C并不支持多继承,但我们仍可间接实现。 Objective-C实现多继承主要可以通过协议、分类、消息转发来实现。我们来总结一下其使用以及优缺点。 1. 组合方式实现 person类继承与singer和dancer类,则可以让person继承与singer,然后实例化一个d

qq_44865905的博客 1582

[特殊字符]交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

🚦交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

cver123的博客 2072

iOS中如何实现多继承

给大家整理了一些有关【IO,F】的项目学习资料(附讲解~~):https://edu.51cto.com/course/36086.htmlhttps://edu.51cto.com/course/27963.html在iOS开发中,Swift语言作为主要编程语言,采用单继承的模型,即一个类只能继承一个父类。然而,我们...

weixin_35135480的博客 180

无线图像传输新突破:深度JSCC算法在低带宽环境下的性能实测

本文深入探讨了基于深度学习的信源信道联合编码(JSCC)算法在低带宽无线图像传输中的突破性表现。通过实测数据对比,深度JSCC在低信噪比环境下展现出卓越的鲁棒性,有效对抗传统方案的“悬崖效应”,实现图像质量的平滑下降,为远程医疗、工业巡检等严苛场景提供了新的解决方案。

weixin_29090089的博客 504

高缺失率时空数据插补实战:从随机森林到扩散模型的性能对比

数据缺失是数据分析与机器学习建模中普遍面临的挑战,尤其在时空数据领域,传感器故障、传输中断等问题常导致数据不完整。数据插补技术旨在基于已知数据的模式和关联性,合理估算缺失值,为后续分析提供可靠基础。其核心原理在于利用数据的时空相关性(如时间周期性、空间邻近性)及与外部驱动因素(如交通、气象)的关联构建预测模型。这项技术的价值在于能将不完整的数据集转化为可用于高质量分析和预测的可用资产,广泛应用于环境监测、交通流量预测、金融风控等领域。本文聚焦于一个极具挑战性的场景——PM2.5监测数据缺失率高达82%,通过

weixin_30363285的博客 543

iOS 协议的继承

今天看了一个pdf文档,了解到了 协议的继承,特别做了个小demo测试了一下,下面是代码

woshiwls的专栏 4522

CTF逆向实战:如何快速识别RC4、TEA和Base64的魔改变种?

本文针对CTF逆向比赛中常见的加密算法魔改问题,详细讲解了如何快速识别和破解RC4、TEA和Base64的变种。通过分析算法核心特征、常见魔改手法,并结合动态调试与脚本编写等实战技巧,帮助逆向分析人员有效应对算法混淆,提升解题效率。

agile9scrum的博客 781

iOS多继承的实现及区别

来自我的个人博客Minecode.link多继承可以允许子类从多个父类派生,而Objective-C并不支持多继承,但我们仍可间接实现。Objective-C实现多继承主要可以通过协议、分类、消息转发来实现。我们来总结一下其使用以及优缺点。通过协议实现协议主要是用来提出类应遵守的标准,但其特性也可用来实现多继承。一个类可以遵守多个协议,也即实现多个协议的方法,以此来达到多继承的效果。概念上的单继承和

Minecode的博客 3237

VisionMaster -Group循环、数组数据格式化

这里创建一个格式化工具,按照自己想要的模式格式化刚刚输出的数据。因为是检测多个物体,所以这里选择输出的是数组。第一次的模板很不满意,反复调整参数也没好,边缘不整齐,强迫症患者受不了。实测如果输入设置太多,会导致模块失效,所以尽量选择需要的少量参数。这里要打开循环使能,循环数值就是高精度匹配的匹配个数。Group输出设置里选择刚刚建立的数据集。左边是主流程,右边是组合模块内部流程。修改采图这里的曝光值,图像提亮一点。建一个数据集,把想要的数据收集起来。用TCP助手测试一下OK。成功得到了想要的数据。

weixin_69505365的博客 4528

使用 WSL 在 Windows 上安装 Linux

开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。

隔壁老瓦的专栏 2872

iOS 协议代理的继承和扩展

在编码时,为了部分代码复用,可能会用带继承关系,有时,父类的协议代理有限,需要我们在继承的同时,扩展父类的协议方法。此时,存在两种选择: 1、在父类代理协议delegate 的基础上扩展新方法。如UIKit框架中,UITableView 继承自UISCrollView ,同时他们都有同名的Delegate 属性,UITableView的Delegate是在UISCrollView的基础上扩展

iOS学堂 5918

YOLOv11的物理信息神经网络(PINN):引入物理规律约束目标运动预测

本文介绍了YOLOv11目标检测与PINN物理信息神经网络的融合技术。YOLOv11采用增强特征提取和参数优化架构,在保持实时性的同时提升检测精度。PINN通过将物理方程嵌入损失函数,实现数据高效学习。两者的结合可显著提升运动预测准确性和遮挡处理鲁棒性。文章详细阐述了环境配置、YOLOv11模型验证方法,并提供了基础PINN框架代码实现,展示了物理约束如何通过自动微分整合到神经网络中。该融合技术适用于自动驾驶、无人机导航等需要物理规律建模的视觉感知场景。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 422

iOS阶段学习第19天笔记(协议-Protocol)

iOS学习(OC语言)知识点整理 一、关于协议(Protocol)的介绍1)概念:协议指多个对象之间协商的一个接口对象,协议提供了一些方法用在协议的实现者和代理者 之间通讯的一种方式2)声明一个协议@protocol协议的名字<基协议>一个协议可以遵守另一个协议: 基协议(这个协议就拥有了基协议中所有方法的声明)3)协议中不能声明成员变量,只能有方法声明。4)协...

weixin_30823001的博客 78

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ios view 切上部分圆角_聊聊iOS中的多继承和多重代理

聊聊iOS中的多继承和多重代理多继承和多重代理在swift的语言层面上是不支持的,但我们有时会遇到这样的问题:类B和C分别继承自A,B1和B2继承自B,C1和C2继承自C.现在我们需要在B1和C1中添加相同的方法,怎么去做?使用继承的话只能在类A中添加,但这样做的结果是基类A会越来越臃肿,最后变成上帝类God Class,维护起来会很困难.在实现完某个代理后发现,我们还要在其他页面中获取数据.例如...

weixin_35642637的博客 164

WINCC7.3破解文件

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

ios开发之代理&&协议

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

weixin_30877181的博客 90

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

代理和协议

1 . 协议的应用与功能 a.应用 1.(主要功能)规范接口(协议规范接口是强制的)2. 实现委托代理机制(实现对象之间的通信) 代理设计模式(iOS中常见) 规范代理的行为-》传值 b.功能 ▪ 协议就是为了满足统一的数据传输 ▪ 一个类只能继承一个直接的父类,但可以通过实现多个接口(遵守多个协议),间接的实现了多继承.2 . 协议范例 #

wangzhen3416的博客 351

ios学习记录 day30 UI 8 协议 滚动视图

UIScrollView UIPageControl @procotol协议是一套标准 协议只声明了方法,接受协议的对象负责实现 作用:监听 配置 流程: 以@procotol开始 -(void)test1;//协议的条款 -(void)test2; @end结束 在.h中引入头文件用@class <#name#> 但是引入协议必须用import...

diaoxian5386的博客 120

IOS之Delegate

在IOS中我们通过协议来实现多继承,因此,有必要对Delegate的实现掌握好。 首先,我们先掌握如何声明一个协议。 @protocol ViewControllerDelegate @required @optional @end 在上述代码中我们声明了一个ViewControllerDelegate的协议,协议中的@require表示对应的方法必须要被遵循,@optional表示对应的

跬步 739

iOS-继承浅析

iOS类是否可以多继承?如果没有,那可以用其他方法实现吗?简述实现过程。 继承 继承的上层是父类,下层是子类.继承具有传递性,子类具有父类所有的特征和行为.继承是单向的,不可以相互继承.假如A继承于B,B继承于C,A具有B,C所有特征和行为. OC只允许单继承,可以用delegate,protocol,和类目来实现多继承. ...

weixin_34392906的博客 118

ios设计模式

1.协议代理 首先,ios协议代理是一种设计模式! 因为ios使用的是oc语言,面向对象但不支持多继承,使用协议代理巧妙的解决多继承的问题! ios协议代理实现没有直接关系的类之间的通信手段,其次协议代理还可以为类添加方法! 代理的主要价值是让你可以很容易的定制各种对象的行为! 协议本身不是类,它是以关键字protocol定义; 2.mvc Modol View Controller(...

weixin_30426065的博客 69

ios开发者修养

sample code 多线程实现方式 内存管理 动画技术 绘图技术 Cocoa的一些设计模式 Objective-C的一些语言特性 建议工程师还是开放心态,和团队共同成长。 1.通用编程技能,例如:一道小算法,数据结构的实现方式,网络,多线程。 2.开发语言,例如:语言特性,重新实现语言提供的功能,是否深入研究过这门语言的某部

TOM的专栏 476

iOS 协议 委托

在iOS开发中协议和委托是两个密不可分的两个东西,但是他们是两个不同的设计模式,协议是一种规范,它定义一些协议接口方法,但是不管协议方法的实现,遵循了协议的类就具备了这种协议方法的能力。委托是一种简单的设计模式,和一种设计思想,他是一个类完成了本类中的一些事情交给另一个类完成的途径。通过委托别的类,来掉协议里的方法实现,委托是oc中的一种多继承的表现。 protocol 协议: 一个完整协

qq_25717219的博客 303
上一篇: iOS中协议delegate的传值注意点
下一篇: copy,retain,strong的区别
浮生丿未歇
博客等级 码龄10年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值