OC协议的简单理解

新建一个工程,工程里面有Person, dog,blackman三个类,person需要找个人来帮他盖房子。

分析:dog是动物,肯定不会造房子,blakman,或许可以建房子,那程序如何判断blackman,dog能否建房子?那我们就需要一个东西来限定/指定他们的属性,这就是协议咯,协议在我看来就是一个可以限定/指定一些对象属性的东西,所以现在我们现在新建一个名为delegate的类

@protocol onedelegate <NSObject>
//创建一个协议
@required
//required下面的方法得实现,不然会报错
-(void)nengGaiFangzi;
//定义“能盖房子”的这么个方法
@end

给blackman挂上协议,并实现协议中定义的方法,说明blackman具有盖房子这个属性,协议挂在@interface后面

#import <Foundation/Foundation.h>

#import "delegate.h"
@interface BlackMan : NSObject <onedelegate>
#import "BlackMan.h"

@implementation BlackMan
- (void)nengGaiFangzi
{

}

- (int)call:(NSString *)name
{
    NSLog(@"%@", name);

    return 123;
}
@end

在person的头文件加入如下代码

#import <Foundation/Foundation.h>

#import "delegate.h"
#import "BlackMan.h"

@interface person : NSObject
@property (nonatomic, weak) id<onedelegate> delegate;//定义一个person的属性,该属性必须实现了onedelegate这个方法
@property (nonatomic, strong) BlackMan *man;

- (void)print;
@end

在viewcontrller实现我们找人盖房子的功能

#import "ViewController.h"

#import "person.h"
#import "Dog.h"
#import "BlackMan.h"

@interface ViewController ()
{

}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

   person *p = [[person alloc] init];//先定义一个对象,才能调用属性
//
//    Dog *dog = [[Dog alloc] init];//可以初始化
//
//    p.delegate = dog;//因为DOG类没加我们的协议,它不具备盖房子属性,更没盖房子的方法,而delegate属性必须实现协议,协议里有盖房子的方法,这个代码肯定报错,

    BlackMan *man = [[BlackMan alloc] init];
    p.delegate = man;
    [p.delegate nengGaiFangzi];

//    p.man = man;
    [p print];

OC协议的简单理解

时间: 2024-10-14 22:08:10

OC协议的简单理解的相关文章

https协议的简单理解

本片文章梳理三个知识点: 1.对称加密和非对称加密的区别 2.https协议的请求流程 3.http协议和https协议的区别 一.对称加密和非对称加密 对称加密:加密和解密使用同一密钥. 非对称加密:有公钥和私钥,一般时使用公钥进行加密,使用私钥进行解密. 二.https协议的请求流程 1.客户端发送请求到达服务器,服务器返回证书到客户端(包含公钥). 2.客户端生成随机数字,并使用公钥进行加密处理,然后发送到服务器. 3.服务器收到客户端发送的数据,使用私钥进行解密,获取到随机数. 4.服务

tcp协议的简单理解

tpc协议属于传输层协议,本篇主要介绍下几个概念,以及握手和挥手的过程. 1.tcp的几个概念 位码:即tcp标志位,有6种提示 SYN:synchronus,表示建立联机. ACK:acknowledgement,确认. PUSH:push,传送. FIN:finish,结束. RST:rest,重置. URG:urgent,紧急. Sequence number:顺序号码. Acknowledge number:确认号码. 2.三次握手过程(假设主机A和主机B进行通信) 第一次握手:主机A发

Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,

简单理解计算机通信

简单理解计算机通信 写在前面: 在计算机刚出现的时候,只能在本机进行一些运算处理,想将一台计算机中的数据转移到另一台计算机中,需要通过外部存储介质来传输,例如磁带.软盘.而网络技术的出现,使得计算机间可以通过一些传输介质(网线.光纤等),实现快速的数据传输和信息交互.如今,网络已无处不在,那么,计算机之间究竟是如何通信的呢?下面会通过一些基础的网络知识来简单理解计算机之间的通信过程. 网络通信模型: 网络通信模型是一种概念模型和框架,旨在使各种计算机在世界范围内互连为网络.其中有OSI七层模型和

【基础服务】简单理解DNS的递归、迭代查询 - DNS(一)

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53.在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明. 简单理解DNS的递归.迭代查询过程: 客户端发

端口和协议的简单概念

1.端口的简单概念: 192.168.33.1代表一台主机,但是主机上可能会有很多服务, 一台主机上的不同服务功能,就是通过端口区分,然后让外部人员访问. 远程连接服务 ssh  22端口 2.协议的简单概念: 汉语.英语,不同的服务提供了不同的端口,对应了不同的功能,通信方式可能也是不同的,这种通信方式我们就可以理解为协议. 一台主机上的不同服务功能,就是通过端口区分,不同的服务端口,客户端和服务器之间通信,就可能使用不同的协议

从Docker在Linux和Windows下的区别简单理解Docker的层次结构

上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的Web程序,在浏览器中输出hello world. 本文内容的测试环境是Windows7下的Docker,用例基于官方文档用例.   一:从运行一个简单的Python Web程序说起 启动Docker客户端并登陆.在客户端中输入以下内容: $ sudo docker run -d -P trainin

网络七层协议的通俗理解

OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OSI模型是从底层往上层发展出来的. 这个模型推出的最开始,是是因为美国人有两台机器之间进行通信的需求. 需求1: 科学家要解决的第一个问题是,两个硬件之间怎么通信.具体就是一台发些比特流,然后另一台能收到. 于是,科学家发明了物理层: 主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介

[转帖]mDNS原理的简单理解

mDNS原理的简单理解 https://binkery.com/archives/318.html 发现还有avahi-daemon mdns 设置ip地址 等等事项 网络部分 自己学习的还是不够多 ,需要加强学习. Android,Java,DNS,局域网,mDNS,组播,Java mDNS,Multicast DNS,mDNS原理,mDNS组播 2016-03-21 08:53:39 mDNS , multicast DNS, 可以理解为局域网内部的 DNS 系统,它和 DNS 有很多相似的