2013-8-5学习练习 协议

1浅拷贝和深拷贝的区别和相同点;


浅拷贝就比如像引用类型,而深拷贝就比如值类型。

浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。

深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。

2用什么方法可以生成一个完全相同的可变数组(1)给你一个不可变数组(2)给你一个可变对象;

NSMultableArray+test.h:


#import <Foundation/Foundation.h>

@interface NSMutableArray (test)

+(id)copyWithMutableArray:(NSMutableArray *)mulArr;

+(id)copywithArray:(NSArray *)Arr;

@end

NSMultableArray+test.m:


#import "NSMultableArray+test.h"

@implementation NSMutableArray (test)

+(id)copyWithMutableArray:(NSMutableArray *)mulArr

{

    NSMutableArray *mulArray = [NSMutableArray arrayWithArray:[mulArr copy]];

    return mulArray;

}

+(id)copywithArray:(NSArray *)Arr

{

    NSArray *Array = [NSArray arrayWithArray:[Arr copy]];

    return Array;

}

@end

main:


#import <Foundation/Foundation.h>

#import "NSMultableArray+test.h"

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        NSMutableArray *mutableArray = [[[NSMutableArray alloc] init] autorelease];

        NSMutableArray *mularr = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",nil];

        mutableArray = [NSMutableArray copyWithMutableArray:mularr];

        NSLog(@"%@",mutableArray);

        NSArray *array = [[NSArray alloc] initWithObjects:@"4",@"5",@"6",nil];

        mutableArray = [NSMutableArray copywithArray:array];

        NSLog(@"%@",mutableArray);

    }

    return 0;

}

结果:

2013-08-05 20:35:41.152 作业2[3062:303] (

    1,

    2,

    3

)

2013-08-05 20:35:41.154 作业2[3062:303] (

    4,

    5,

    6

)

3老师发试卷,学生做题目,做完题目报告,老师收试卷(用协议委托写这个过程);

protocolText.h:


#import <Foundation/Foundation.h>

@protocol protocolText <NSObject>

@optional

-(void)Excise;//做题目

-(void)ReceivePager;//收试卷

@end

Student.h:


#import <Foundation/Foundation.h>

#import "protocolText.h"

@interface Student : NSObject<protocolText>

@property(nonatomic,retain) id<protocolText> stuDelegate;

-(void)receive;//叫老师收试卷

-(void)Excise; //学生做试卷

@end

Student.m:


#import "Student.h"

@implementation Student

-(void)receive

{

    if ([_stuDelegate respondsToSelector:@selector(ReceivePager)]) {

        [_stuDelegate ReceivePager];

    }

}

-(void)Excise

{

    NSLog(@"学生做试卷");

}

- (void)dealloc

{

    [_stuDelegate release];

    [super dealloc];

}

@end

Teacher.h:


#import <Foundation/Foundation.h>

#import "protocolText.h"

@interface Teacher : NSObject<protocolText>

@property(nonatomic,retain) id<protocolText> teaDelegate;

-(void)excise; //叫学生做试卷

-(void)SendPager;

-(void)ReceivePager;//老师收试卷

@end

Teacher.m:


#import "Teacher.h"

@implementation Teacher

-(void)SendPager

{

    NSLog(@"老师发试卷");

}

-(void)excise

{

    if ([_teaDelegate respondsToSelector:@selector(Excise)]) {

        [_teaDelegate Excise];

    }

}

-(void)ReceivePager

{

    NSLog(@"老师收试卷");

}

- (void)dealloc

{

    [_teaDelegate release];

    [super dealloc];

}

@end

main:


#import <Foundation/Foundation.h>

#import "Student.h"

#import "Teacher.h"

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        Student *stu = [[[Student alloc] init] autorelease];

        Teacher *tea = [[[Teacher alloc] init] autorelease];

        stu.stuDelegate = tea;

        tea.teaDelegate = stu;

        //老师发试卷

        [tea SendPager];

        //老师叫学生做试卷

        [tea excise];

        //学生叫老师收试卷

        [stu receive];

    }

    return 0;

}

结果:

2013-08-05 19:59:47.083 作业3[2817:303] 老师发试卷

2013-08-05 19:59:47.085 作业3[2817:303] 学生做试卷

2013-08-05 19:59:47.086 作业3[2817:303] 老师收试卷

时间: 2024-11-01 19:58:18

2013-8-5学习练习 协议的相关文章

JavaWeb学习----http协议

一.什么是HTTP协议: 1.概念: 客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式(规定客户端和服务器如何进行交互). HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是基于TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程. 注:HTTP协议是学习JavaWeb开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,

你知道吗?如何学习TCP协议

TCP协议目前是事实上的网络基础.许多更高层的应用协议HTTP,FTP都基于TCP. TCP协议的学习可以说枯燥无比,尤其是学生阶段,根本不知道用在什么地方,根本不知道重要性是什么.事实上是,基于目前的网络发展和分布式发展,TCP简直就是基础中的基础.许多网络的问题,配置,入侵,防御乃至架构,都涉及到TCP的具体应用及机制. 以下是我总结的TCP学习过程, 1.了解学习TCP协议的重要性和必要性,了解TCP协议为什么被发展出来 2.学习TCP协议的三次握手以及四次挥手,重点了解为什么要三次握手,

逆向wireshark学习SSL协议算法(转)

小贴士:SSL协议的定义 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议. 正文 前不久从网上得到一个https会话数据包文件https.pcap,用32位的wireshark打开(64位的会增加逆向难度,因为用到寄存器传递参数) 如图: 就这么多数据包,非常适合用来研究ssl协议的实现. wireshark只要导入密钥是可以自动解密出明文的.点开Edi

图解HTTP学习笔记——简单的HTTP协议

简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地址栏输入要访问的网站的地址(如百度),按下回车,浏览器就显示了我们要访问的网站的网页. 那么在我们敲下回车键的那一刻,究竟发生了什么呢.通过今天的学习,能大致了解其中原理,并简单学习HTTP协议. 目录 1.客户端与服务器端2.HTTP是不保存状态的协议3.请求URI定位资源4.告知服务器意图的HTTP方法5

协议测试

协议测试 May 9, 2016 协议测试 What 什么是协议测试 什么事协议? 协议是计算机进程或网络中进行数据交换而建立的规则.标准或约定的集合. 什么是协议测试? 协议测试就是软件界面与应用服务器间通信规则的测试. 需要注意一点,协议测试不是接口测试,接口测试通常是RPC调用,例如基于HTTP SOAP, XML-RPM 并不在本文的讨论范围之内,接口测试可以放在单元测试中. Why 为什么要做协议测试 传统测试更多注重界面的测试,界面是针对用户的,也是唯一可见,也是最容易测试的.我们通

软件测试工具LoadRunner中的测试协议选择

在学习LoadRunner协议选择之前,我觉得我们有必要了解一下协议的基本概念.首先我们知道,计算机与计算机之间的通信都离不开通信协议,接着我们来说说通信协议的概念.通信协议是什么,通信协议实际上是一组规定和约定的集合.说白了就是两台或者多台计算机在通信时必须约定好本次通信做什么,例如是进行文件传输,还是发送电子邮件;然后约定怎样通信,什么时间通信等.因此,通信双方要遵从相互可以接受的协议(相同或兼容的协议)才能进行通信,如目前因特网上广泛使用的TCP/IP协议等,任何计算机连入网络后只要运行T

服务器-CIFS协议如何枚举网络上的资源(共享文件夹/打印机)

问题描述 CIFS协议如何枚举网络上的资源(共享文件夹/打印机) 最近在学习CIFS协议,用WireShark拦截SMB包发现客户端在连接ipc$之后直接就开始查询服务器端共享目录的信息了,但是没看到服务器端返回的共享目录信息,请问这些信息是怎么发送给客户端的? 谢谢 解决方案 图库了徒劳咯的吗?咯模拟

Wireshark基本介绍和学习TCP三次握手

之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS. 这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包. 记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实.有了wireshark就能截获这些网络数据包,可以清晰的看到数据包中的每一个字段.更能加深我们对网络协议的理解.对我而言, wireshark

《Linux高性能服务器编程》——第1章 TCP/IP协议族 1.1 TCP/IP协议族体系结构以及主要协议

第1章 TCP/IP协议族 现在Internet(因特网)使用的主流协议族是TCP/IP协议族,它是一个分层.多协议的通信体系.本章简要讨论TCP/IP协议族各层包含的主要协议,以及它们之间是如何协作完成网络通信的. TCP/IP协议族包含众多协议,我们无法一一讨论.本书将在后续章节详细讨论IP协议和TCP协议,因为它们对编写网络应用程序具有最直接的影响.本章则简单介绍其中几个相关协议:ICMP协议.ARP协议和DNS协议,学习它们对于理解网络通信很有帮助.读者如果想要系统地学习网络协议,那么R