---------------
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
- (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[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 @"红色";
}
}
}
- (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:@"沙和尚"];
{
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];
[out addData:@"猪八戒"];
[out output];
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,可以把类的接口文件,类的实现文件写在main.m文件中。
2.本节代码要与上一节代码中的代码共同编译运行。
二、本节代码涉及到的知识点:
1.FKPrinter类遵守了FKPrintable协议,因此实例对象printer可以调用这三个协议里的方法。
2.①②两句代码分别示范了两种使用协议来定义变量的方法。它们的格式如下:
NSObject<协议1,协议2,…>*变量名;
id<协议1,协议2,…>变量名;
3.注意:如果使用协议来定义变量,那么这些变量只能调用该协议中声明的方法。