热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

iOS开发:Protocol协议以及委托代理传值

由于OC不支持多继承,所以在很多时候都是要用Protocol协议来代替。Protocol协议只能定义公用的一套接口,不能提供具体的实现方法。也就是说只告诉需要做什么,但具体怎么实现需要

        由于OC不支持多继承,所以在很多时候都是要用Protocol协议来代替。Protocol协议只能定义公用的一套接口,不能提供具体的实现方法。也就是说只告诉需要做什么,但具体怎么实现需要另外实现操作。

       当一个类要使用某一个Protocol协议时,都必须要遵守协议。如果有些必须要实现的方法,你没有实现,编译器就会报警告来提醒你没有遵守未实现的协议。这仅仅是警告而不是报错,也就是说你不实现那些必要实现的方法,程序依然能在编译器上正常运行,只不过是多了些警告而已。

        一、Protocol协议的作用

        1. 定义一套公有的接口,Public

  •  @required:必须实现的方法
  •  @optional:可选 实现的方法(可以全部都不实现)

        2. 委托代理传值

        委托代理是一个设计模式,就是委托别人去执行某件事情。举个例子:两个类间的传值,类A调用类B的方法,类B在执行过程中遇到问题通知类A,这种情况就需要用到代理。又比如:两个控制器间的传值,从A1跳转到A2,再从A2返回到A1时,需要通知A1刷新数据或者是进行其他操作,这时候就需要用到了代理传值。

        3.定义公有的接口,Public

        ①新建一个协议文件,Objective-C File类型的文件;

        ②然后命名协议文件及选择文件类型,文件类型选择Protocol

        ③在新建的协议文件的.h文件里面操作,声明必须实现的方法和非必须实现的方法;

        ④最后再需要使用该协议的地方,引入头文件,然后遵循协议,最后去实现协议即可。









         二、委托代理传值

         1.首先创建两个控制器AB

         2.B控制器.h里面,新建一个协议,声明代理传值方法,委托代理人;在B控制器.m里面,实现通知执行协议方法;

         3.A控制器.m里面,导入控制器B头文件,然后再需要的地方实现B控制器的协议方法即可。





          三、其他

          当你需要定义一个公用的接口,实现方法可以在不同的时候,就可以使用Protocol协议;

          当你需要不同界面之间的通讯传值,也可以使用基于Protocol协议,使用代理设计模式来进行传值操作。


          关注三掌柜的微信公众号,一起交流探讨开发经验,我在微信公众号等你来哦!




推荐阅读
  • 安卓手机也能运行苹果iOS系统?悬浮球技术让多系统共存成为可能,值得期待!
    通过悬浮球技术,安卓手机有望实现与苹果iOS系统的共存,这一创新技术将为用户带来前所未有的多系统体验。不仅能够支持多种应用和功能的无缝切换,还能显著提升设备的灵活性和实用性,未来前景令人期待。 ... [详细]
  • Spring Boot 和 Spring Cloud 是 Spring 生态系统中的重要组成部分,各自具有独特的特性和应用场景。Spring Boot 通过简化配置和自动配置机制,显著提高了开发和部署效率,减少了传统 Spring 应用中繁琐的 XML 配置文件需求。而 Spring Cloud 则在此基础上进一步提供了分布式系统的解决方案,包括服务发现、配置管理、断路器等高级功能,适用于微服务架构的构建和管理。本文将深入探讨两者的核心差异,并分析其各自的最佳应用场景。 ... [详细]
  • 本文介绍了如何在 PyCharm 中高效利用 Anaconda 管理项目环境配置。首先,确保已安装必要的软件。以 Windows 10 64位专业版为例,建议使用 PyCharm 2018.2 或更高版本。通过 Anaconda 创建和管理虚拟环境,可以显著提升开发效率,确保项目依赖的一致性和隔离性。文章详细阐述了从安装到配置的每一步操作,帮助开发者快速上手并充分利用这些工具的优势。 ... [详细]
  • 大数据应用实例:电视收视率分析企业项目实操第二篇
    本文继续探讨大数据在电视收视率分析中的应用,详细介绍了如何在CentOS系统中进行防火墙管理。针对CentOS 6.5及更早版本,提供了具体的命令操作步骤,包括停止防火墙服务和禁用防火墙启动。此外,还深入讨论了这些操作对数据传输和系统安全的影响,为实际项目实施提供了宝贵的技术参考。 ... [详细]
  • 使用CardView实现圆角和圆形效果:边角与半径的精准控制 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 如何在微信文章中插入附件文档:详细教程与技巧分享
    对于众多企业和教育机构的微信公众号而言,在发布信息时常常需要在文章中嵌入各类文档附件,例如应聘申请表、健康声明书、数据记录表、疫情防控登记表、项目申报评分表及各类公告通知等。本文将详细介绍如何在微信文章中高效地插入不同类型的文档附件,并分享一些实用技巧,帮助用户提升内容发布的专业性和便捷性。 ... [详细]
  • 使用红米5 Plus一个半月后,在运行《王者荣耀》和《终结者2》时出现卡顿现象,原因何在? ... [详细]
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • 在 Windows 10 系统下配置 Python 3 和 OpenCV 3 的环境时,建议使用 Anaconda 分发版以简化安装过程。Anaconda 可以从其官方网站(https://www.anaconda.com/download)下载。此外,本文还推荐了几本关于 Python 和 OpenCV 的专业书籍,帮助读者深入理解和应用相关技术。 ... [详细]
  • 本文分享了将物理服务器上的操作系统、应用软件及数据迁移到阿里云ECS服务器的实际经验。P2V迁移通过利用多种工具软件,将物理服务器的系统状态和数据完整地复制到虚拟磁盘中,确保在阿里云平台上顺利运行。该过程不仅涉及技术细节,还涵盖了迁移前的准备、迁移中的监控以及迁移后的验证等多个环节,为用户提供了一套全面的迁移方案。 ... [详细]
  • Win7旗舰版无法调节屏幕亮度的原因及解决方法
    Win7旗舰版无法调节屏幕亮度的原因及解决方法 ... [详细]
  • 在微信小程序中实现外部链接跳转,可以通过微信官方提供的组件来完成。具体而言,有以下两种方法:1. 首先,可以通过创建一个新的 `` 组件来加载外部网页。这个组件允许在小程序内部嵌入一个网页视图,从而实现外部链接的展示和交互。2. 另一种方法是使用 `wx.navigateToMiniProgram` API,通过调用该接口可以跳转到其他已安装的小程序,实现更丰富的跨应用交互功能。这两种方法各有优缺点,开发者可以根据实际需求选择合适的方式。 ... [详细]
  • 织梦系统多条件联动筛选功能详细教程及删除操作指南
    多条件联动筛选功能广泛应用于图片展示、装修设计、机械设备和在线商城等场景,通常筛选条件应聚焦于用户最关心的要素,而非涵盖所有可能的选项。在DedeCMS中,多条件筛选的PHP开发并未内置删除已选条件的功能,但通过理解PHP筛选与JS筛选的不同机制,实现这一功能相对简单且易于操作。 ... [详细]
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
author-avatar
SREFLANKCWF
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有