protocol类型限制

来源:互联网 发布:润桐数据 编辑:程序博客网 时间:2024/05/18 07:06

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





0 0