---------------
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.注意:如果使用协议来定义变量,那么这些变量只能调用该协议中声明的方法。