protocol类型限制

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值