您的位置:首页 > 其它

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.注意:如果使用协议来定义变量,那么这些变量只能调用该协议中声明的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: