044.@interface <>遵守正式协议
2015-07-26 17:39
302 查看
---------------
main.m
---------------
#import
<Foundation/Foundation.h>
#import
"FKPrintable.h"
#define MAX_CACHE_LINE
10
@interface
FKPrinter :
NSObject <FKPrintable>
@end
@implementation
FKPrinter
{
NSString* printData[MAX_CACHE_LINE];
int
dataNum;
}
- (void) output
{
while(dataNum
>
0)
{
NSLog(@"打印机使用%@打印:%@"
,
self.printColor , printData[0]);
dataNum--;
for(int
i =
0 ; i <
dataNum ; i++)
{
printData[i] = printData[i +
1];
}
}
}
- (void) addData: (NSString*) msg
{
if (dataNum >= MAX_CACHE_LINE)
{
NSLog(@"输出队列已满,添加失败");
}
else
{
printData[dataNum++] = msg;
}
}
- (NSDate*) getProduceTime;
{
return [[NSDate alloc] init];
}
- (NSString*) printColor
{
return
@"红色";
}
@end
int
main()
{
FKPrinter* printer = [[FKPrinter
alloc]
init];
[printer
addData:@"张三丰"];
[printer
addData:@"李白"];
[printer
output];
[printer
addData:@"唐僧"];
[printer
addData:@"沙和尚"];
[printer
output];
NSObject<FKProductable>* p = [[FKPrinter
alloc]
init];
// ①
NSLog(@"%@"
, p.getProduceTime);
id<FKOutput>
out
= [[FKPrinter
alloc]
init];
// ②
[out
addData:@"孙悟空"];
[out
addData:@"猪八戒"];
[out
output];
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,可以把类的接口文件,类的实现文件写在main.m文件中。
2.本节代码要与上一节代码中的代码共同编译运行。
二、本节代码涉及到的知识点:
1.FKPrinter类遵守了FKPrintable协议,因此实例对象printer可以调用这三个协议里的方法。
2.①②两句代码分别示范了两种使用协议来定义变量的方法。它们的格式如下:
NSObject<协议1,协议2,…>*变量名;
id<协议1,协议2,…>变量名;
3.注意:如果使用协议来定义变量,那么这些变量只能调用该协议中声明的方法。
main.m
---------------
#import
<Foundation/Foundation.h>
#import
"FKPrintable.h"
#define MAX_CACHE_LINE
10
@interface
FKPrinter :
NSObject <FKPrintable>
@end
@implementation
FKPrinter
{
NSString* printData[MAX_CACHE_LINE];
int
dataNum;
}
- (void) output
{
while(dataNum
>
0)
{
NSLog(@"打印机使用%@打印:%@"
,
self.printColor , printData[0]);
dataNum--;
for(int
i =
0 ; i <
dataNum ; i++)
{
printData[i] = printData[i +
1];
}
}
}
- (void) addData: (NSString*) msg
{
if (dataNum >= MAX_CACHE_LINE)
{
NSLog(@"输出队列已满,添加失败");
}
else
{
printData[dataNum++] = msg;
}
}
- (NSDate*) getProduceTime;
{
return [[NSDate alloc] init];
}
- (NSString*) printColor
{
return
@"红色";
}
@end
int
main()
{
FKPrinter* printer = [[FKPrinter
alloc]
init];
[printer
addData:@"张三丰"];
[printer
addData:@"李白"];
[printer
output];
[printer
addData:@"唐僧"];
[printer
addData:@"沙和尚"];
[printer
output];
NSObject<FKProductable>* p = [[FKPrinter
alloc]
init];
// ①
NSLog(@"%@"
, p.getProduceTime);
id<FKOutput>
out
= [[FKPrinter
alloc]
init];
// ②
[out
addData:@"孙悟空"];
[out
addData:@"猪八戒"];
[out
output];
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,可以把类的接口文件,类的实现文件写在main.m文件中。
2.本节代码要与上一节代码中的代码共同编译运行。
二、本节代码涉及到的知识点:
1.FKPrinter类遵守了FKPrintable协议,因此实例对象printer可以调用这三个协议里的方法。
2.①②两句代码分别示范了两种使用协议来定义变量的方法。它们的格式如下:
NSObject<协议1,协议2,…>*变量名;
id<协议1,协议2,…>变量名;
3.注意:如果使用协议来定义变量,那么这些变量只能调用该协议中声明的方法。
相关文章推荐
- Python中的re.search和re.findall之间的区别
- sqlserver2008 中使用MSXML2.ServerXMLHttp拼装soap调用webservice
- java反射机制,实例
- 1063. Set Similarity (25)
- 走进科学 WAF(Web Appllication Firewall)
- leetcode第225题:Implement Stacks using Queues
- 2015第30周日
- 关于文件路径读取的几个方法
- 插入排序算法笔记
- Matplotlib坑爹依赖安装全解
- 浅谈 WPF 项目框架搭建
- 最小生成树——kruskal算法
- POJ 3565 Ants
- "\n" 与 '\n' 是否等价
- .htaccess重命名时提示必须键入文件名怎么解决
- 漫画的由来,卡通漫画、暴走漫画、先锋漫画、漫画与前卫艺术之间的边缘艺术形式、实用漫画、讽刺漫画、幽默漫画的定义
- easyui searchbox
- Java泛型学习笔记
- UVa 10271 - Chopsticks(DP)
- linux shell脚本守护进程监控svn服务