main.m
#import "Dog.h"
#import "Girl.h"
#import "caculatorProtocol.h"
#import "houseHoldProtocol.h"
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
Girl * girl = [[Girl alloc] init];
Girl<houseHoldProtocol> * obj = girl;
Dog * dog = [[Dog alloc] init];
Dog<caculatorProtocol> * girlNeedDog = dog;
girl.dog = girlNeedDog;
BOOL b = [obj respondsToSelector:@selector(goodJob)];
if (b) {
NSLog(@"a wonderful girlfirend");
}
else {
NSLog(@"a good girlfirend");
}
}
return 0;
}
houseHoldProtocol.h
#import <Foundation/Foundation.h>
@protocol houseHoldProtocol <NSObject>
@required
- (void)zuofan;
- (void)xiyifu;
@optional
- (void)goodJob;
@end
caculator.h
#import <Foundation/Foundation.h>
@protocol caculatorProtocol <NSObject>
@optional
- (void)mod;
@end
Dog.h
#import "caculatorProtocol.h"
#import <Foundation/Foundation.h>
@interface Dog : NSObject <caculatorProtocol>
@end
Dog.m
#import "Dog.h"
@implementation Dog
- (void)mod
{
NSLog(@"i can caculator");
}
@end
Girl.h
#import "Dog.h"
#import "houseHoldProtocol.h"
#import <Foundation/Foundation.h>
@interface Girl : NSObject <houseHoldProtocol>
/** dog */
@property (nonatomic, strong) Dog * dog;
@end
Girl.m
#import "Girl.h"
@implementation Girl
- (void)zuofan
{
NSLog(@"i can cook");
}
- (void)xiyifu
{
NSLog(@"i can wash the clothes");
}
- (void)goodJob
{
NSLog(@"i have good job");
}
@end