【iOS】Swift和OC协议的区别?为何Swift是面向协议的?

本文对比了Swift与Objective-C中的协议概念,强调Swift通过协议扩展实现了面向协议编程,提供了缺省实现,定义属性方法,减少了模块间的耦合,而OC协议主要用于委托代理模式的传值和回调通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、共同点

本质都是抽取不同类的共同方法和属性(声明),供遵循协议的类或对象使用。

都可以通过定义协议实例deleagate,来实现委托代理模式。

PS:类比继承的概念,继承父类的方式比较险隘,子类和父类只能为同一基类,且方法都有实现,需在子类中override,并不能把方法和属性完全独立出来,且不能多继承。

二、区别(核心)

OC中的协议:

1、更单纯的受限于委托代理的含义,多用于跨类的传值和回调通知。

Swift的协议:

1、Swift可以通过协议 extension 扩展,缺省实现协议的方法(OC不行)。

2、定义属性方法

3、Swift是面向协议编程,其思想是通过抽取不同类中的相同方法和属性,实现模块化减少耦合。

4、Swift的协议不需要单独声明协议对象(**id delegate **)和指定代理( delegate = self ),只需要遵循协议的类实现声明,或使用协议的缺省实现。

三、为何说Swift是面向协议协议编程?

传统的协议(比如Objective-C的protocol)只能定义接口,不能复用实现,遵守同一个协议的不同的类,只能分别实现协议接口,使用场景受限了很多。
Swift只是多了一个协议扩展的特性,但却带来了编程范式的进化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值