1、协议和委托的使用

1)、协议可以看下我的这篇博客

IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/80963731

2)、委托可以叫代理,实现协议的类的对象可以叫委托对象或者代理对象

3)、关键就是我们在控制器里类(获取数据类)里面的成员变量需要是一个委托对象或者代理对象

4)、然后调用控制器里类(获取数据类)里面的方法的时候会调用委托对象里面定义的方法

2、测试app启动弹框提示

1)、control.h

#ifndef Control_h
#define Control_h
#import <Foundation/Foundation.h>//协议定义
@protocol UpdateAlertDelegate
-(void)updateAlert;
@end@interface Control : NSObject
//遵循协议的一个代理变量定义
@property (nonatomic, weak) id<UpdateAlertDelegate> delegate;
- (void) willShowAlert;
@end
#endif /* Control_h */

2)、control.m

#import <Foundation/Foundation.h>
#import "Control.h"
@implementation Control- (void) willShowAlert
{[self.delegate updateAlert];
}@end

3) 、我们在ViewController.h文件里面实现在control.h文件里面定义的协议

#import <UIKit/UIKit.h>
#import "Control.h"@interface ViewController : UIViewController<UpdateAlertDelegate>@end

4)、在ViewController.m文件里面实现协议的定义的方法,而且实例化对象设置自己为委托对象

#import "ViewController.h"
#import "Control.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];Control *control = [Control new];control.delegate = self;[control willShowAlert];
}- (IBAction)ui:(id)sender {NSLog(@"hello word");
}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}- (void)updateAlert
{UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"提示" message:@"协议和代理" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定",nil];alert.alertViewStyle=UIAlertViewStyleDefault;[alert show];
}
@end

3、效果

IOS之学习笔记十五(协议和委托的使用)相关推荐

  1. IOS之学习笔记十四(协议的定义和实现)

    1.正式协议的定义 @protocol 协议名 <父协议1, 父协议2>{零个到多个方法定义} 一个协议可以有多个直接父协议,但协议只能继承协议,不能继承类 协议只有方法签名,没有方法实现 ...

  2. python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  3. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  4. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

  5. Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告

    请看之前的:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 话不多说,直接上demo <!DOCTYPE html> <html lang="en"& ...

  6. 世界是有生命的(通向财富自由之路学习笔记十五)

    最近因为工作调度的事情,有了一段空闲的日子,有比较多的时间来回望自己走过的路以及如何走好以后的路.之前忙得很少时间来写博文,很少时间来写读书笔记,逐渐将自己一些很好的习惯丢弃了.从今天起将重拾写博文的 ...

  7. 前端学习笔记(十五)

    第十五章 HTML5新增标签 一.HTML5概述 1.简介         HTML5万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言的第五次大修改.HTML5将成为 HTML.XHTML ...

  8. 【theano-windows】学习笔记十五——受限玻尔兹曼机

    前言 终于到了最喜欢的模型: 受限玻尔兹曼机(RBM)了, 发现关于RBM是如何从能量模型发展过来的介绍非常不错, 而关于详细理论证明, 可以去看我前面的受限玻尔兹曼机的一系列博客. 国际惯例, 参考 ...

  9. hough变换直线检测_CV学习笔记(十五):直线检测

    在这一篇文章中我们将学习使用OpenCV中的 HoughLines 函数和 HoughLinesP 函数来检测图像中的直线. 在这个函数中,使用的是霍夫变换(Hough Transform) 这是计算 ...

最新文章

  1. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件...
  2. gradle build connection reset or protocol_version build failure
  3. 一步步学习 Spring Data 系列之JPA(一)
  4. 【12c新特性】12c中如何自动启动PDB Pluggable Database
  5. SendMessage 和 PostMessage
  6. 中兴智能视觉大数据报道:人脸识别准确率高达99.8%
  7. Day05 - Python 常用模块
  8. 找找 Spring Event 源码中各种设计模式的使用
  9. 使用jupyter notebook连接服务器进行远程写代码
  10. ubuntu MySQL Oracle_Oracle 与 MySql 区别
  11. python中的深浅拷贝
  12. 华为云云容器快速搭建网站实践随记—利用公有镜像搭建WordPress
  13. python读取大文件内存不够_大型CSV文件(numpy)上的Python内存不足
  14. 基于redis的乐观锁实践
  15. JQuery和JavaScript常用方法的一些区别
  16. 如何在Ubuntu中更改用户密码
  17. Windows Mobile 获取来电号码和屏蔽来电
  18. Windows phone8 基础篇(二) xaml介绍 一
  19. QoS专题-第4期-QoS实现之限速
  20. Uva 12563 - Jin Ge Jin Qu(01背包)

热门文章

  1. 控制 Redis stream 的消息数量
  2. MemoryCache 使用不当导致的一个 BUG
  3. 微服务的终极目标,Mecha分布式运行时之Dapr
  4. 数据资产纳入国资保值增值考核
  5. 谈谈为什么我们需要云原生架构?
  6. Windows 7 安装 .NET 5 / .NET Core 3.1 环境的方法和依赖文件
  7. 常见的C#异常及其修复方法
  8. Gartner:容器采用将迅速增长,但不会很快有利可图
  9. 如何将 Azure 上的 Ubuntu 19.10 服务器升级到 20.04
  10. 如何编写高性能的C#代码(二)