热门标签 | 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协议,使用代理设计模式来进行传值操作。


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




推荐阅读
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 在API测试中,我们常常需要通过大量不同的数据集(包括正常和异常情况)来验证同一个接口。如果为每种场景单独编写测试用例,不仅繁琐而且效率低下。采用数据驱动的方式可以有效简化这一过程。本文将详细介绍如何利用CSV文件进行数据驱动的API测试。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
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社区 版权所有