@fiy-fish
2015-07-19T10:23:03.000000Z
字数 1785
阅读 1386
未分类
// main.m// 公司//// Created by Aaron on 15/7/13.// Copyright (c) 2015年 Aaron. All rights reserved.//#import <Foundation/Foundation.h>//创建一个公司类,需要招聘编写IOS代码的家伙#import "Company.h"#import "Person.h"int main(int argc, const char * argv[]) {@autoreleasepool {Company *c = [[Company alloc] init];Person *p = [[Person alloc] init];id <WriteIOSCode> obj = p;//[obj compare:@2];//[obj writeIosCode];//[c addSomeOne:obj];//[c addSomeOne:nil];//可以用遵循协议少的指针指向遵循协议多的对象[c addAnOther:p];}return 0;}
#import <Foundation/Foundation.h>#import "Company.h"#import "Eat.h"//遵循协议//让对象同时遵循两个协议@interface Person : NSObject <WriteIOSCode,WriteAndroidCode,Play>//如果遵循了子协议,那么父协议也遵循了,所以要把父协议的方法也实现掉@end
#import "Person.h"@implementation Person-(void)writeIosCode{NSLog(@"人帮公司写IOS代码");}-(void)writeAndroidCode{NSLog(@"人帮公司写安卓代码");}-(void)eatFruit{NSLog(@"吃水果");}-(void)playLOL{NSLog(@"打撸啊撸");}@end
#import <Foundation/Foundation.h>@protocol WriteIOSCode <NSObject>-(void)writeIosCode;@end@protocol WriteAndroidCode <NSObject>-(void)writeAndroidCode;@end@protocol IOSAndAndroidCode <WriteIOSCode,WriteAndroidCode>@end@interface Company : NSObject-(void)addSomeOne:(id <WriteIOSCode>)obj;//同时遵循两个协议,协议中间用,隔开-(void)addAnOther:(id <WriteIOSCode,WriteAndroidCode>)obj;@end
#import "Company.h"@implementation Company-(void)addSomeOne:(id <WriteIOSCode>)obj{[obj writeIosCode];}-(void)addAnOther:(id <WriteIOSCode,WriteAndroidCode>)obj{[obj writeIosCode];[obj writeAndroidCode];}@end
#import <Foundation/Foundation.h>//将协议单独分到文件里面//NSObject 基协议//当没有明确的父协议需要遵循的时候,直接遵循基协议@protocol Eat <NSObject>@required //必须实现的方法(默认缺省的值)-(void)eatFruit;@optional //可选择性实现的方法//实际在开发的过程中,没办法保证其他人严格按照语法来,所以我们通常都会做检测,看是否实现了协议的方法@end//协议的方法自己可以不实现,让遵循的对象来实现//通常被用在统一接口的地方,所以和实例变量无关,也就是协议里面不能定义实例变量//继承统一接口://都可以实现接口统一, 子类继承父类,其实产生了一个新的类,还可以添加实例变量//协议统一接口://不会产生新的类,也不会添加新的属性@protocol Play <Eat>-(void)playLOL;@end
