您的位置:首页 > 移动开发 > IOS开发

iOS中的delegate和Protocol

2015-08-12 11:01 591 查看
main.m

Man *laowang = [Man manWithName:@"haohao" gender:@"男" age:0];

laowang.age = 20;

Woman *sister = [Woman womanWithName:@"奶茶" gender:@"女" age:0];
sister.age = 20;

[laowang playGame];
[laowang makeMoney];

[sister shopping];
[sister fallInLove];

sister.delegare = laowang;

[sister findFloodDirty];


Man.h

#import <Foundation/Foundation.h>
#import "Woman.h"
@interface Man : NSObject<MarryDelegate>
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *gender;
@property (nonatomic, assign) NSInteger age;

- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age;
+ (id)manWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age;
- (void)sayHi;
- (void)playGame;
- (void)makeMoney;
@end


man.m

@implementation Man
- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
if (self = [super init]) {
self.name = name;
self.gender = gender;
self.age = age;
}
return self;
}
+ (id)manWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
return  [[Man alloc] initWithName:name gender:gender age:age];
}
- (void)sayHi
{
NSLog(@"我是%@ ,性别%@,年龄%ld", self.name, self.gender, self.age);
}

- (void)playGame{
NSLog(@"小撸怡情,大撸伤身!");
}
- (void)makeMoney{
NSLog(@"挣钱,给老婆花");
}
#pragma ---marray
- (void)cleanHouse
{
NSLog(@"结婚扫地,呵呵,赚到了");
}

- (void)cooking{
NSLog(@"不敢相信,我做的饭这么好吃");
}

- (void)washFeet
{
NSLog(@"我说洗脚,你就相信");
}

- (void)washCloth
{
NSLog(@"偶尔洗洗");
}

//生孩子
- (void)giveBathToChild
{
NSLog(@"生孩子是两个人的事");
}

@end


Woman.h

@protocol MarryDelegate <NSObject>

//扫地

- (void)cleanHouse;

- (void)cooking;

- (void)washFeet;

- (void)washCloth;

@optional
//生孩子
- (void)giveBathToChild;

@end

@interface Woman : NSObject
@property (nonatomic,retain) NSString *name;
@property (nonatomic,retain) NSString *gender;
@property (nonatomic,assign) NSInteger age;
//代理属性
//女人的丈夫,必须服从结婚协议  --- MarryDelegate
@property (nonatomic,assign) id<MarryDelegate> delegare;

- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age;
+ (id)womanWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age;
- (void)sayHi;

- (void)shopping;

- (void)fallInLove;

//地脏了
- (void)findFloodDirty;

- (void)hungary;

- (void)clothDirty;

- (void)lonely;

@end


woman.m

#import "Woman.h"

@implementation Woman
- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
if (self = [super init]) {
self.name = name;
self.gender = gender;
self.age = age;
}
return self;
}
+ (id)womanWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
return [[self alloc] initWithName:name gender:gender age:age];
}

- (void)sayHi
{
NSLog(@"我是%@,%@的,芳龄%ld",self.name, self.gender, self.age);
}

- (void)shopping
{
NSLog(@"哎呀,衣服好漂亮!");
}

- (void)fallInLove
{
NSLog(@"呵呵,又谈恋爱了");
}

//地脏了
- (void)findFloodDirty;
{
[self.delegare cleanHouse];
}

- (void)hungary
{
[self.delegare cooking];
}

- (void)clothDirty
{
[self.delegare washCloth];
}

- (void)lonely
{
//判断代理是否想去生
if ([self.delegare respondsToSelector:@selector(giveBathToChild)]) {
[self.delegare giveBathToChild] ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: