委託,協議(代理模式)

1.delegateide

傳值,傳事件。oop

一、避免子類化帶來的過多的子類以及子類與父類的耦合
二、經過委託傳遞消息機制實現分層解耦ui

eg.spa

代理3d

#import <Foundation/Foundation.h>

@class Children;

 @protocol ChildrenDelegate <NSObject>

 @required

- (void)Eat:(Children *)children;

@optional

//....

@end
View Code

代理對象->保姆代理

.h
@interface 保姆 : NSObject<ChildrenDelegate>
- (void)Eat:(Children *)children;
@end

.m
@implementation 保姆
- (void)Eat:(Children *)children{
    NSLog(@"");
}
@end
View Code

被代碼對象->小孩code

.h
@interface Children : NSObject
{
    id<ChildrenDelegate> delegate;
    NSInteger intTimer;
}
@property (strong) id<ChildrenDelegate> delegate;
//-(void)setDelegate:(id)delegate;

@end

.m
- (id)init
{
    self=[super init];
    if (self!=nil) {
            [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(go) userInfo:nil repeats:YES];
    }

    return self;
}

- (void)go
{
  [delegate Eat:self];
}
View Code

Test:對象

        Children *c=[[Children alloc]init];
        保姆 *n=[[保姆 alloc]init];
        c.delegate=n;
        //  [c setDelegate:n];
        [[NSRunLoop currentRunLoop]run];
View Code
相關文章
相關標籤/搜索