你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS_代理設計模式demo

iOS_代理設計模式demo

編輯:IOS開發綜合

main.m

 

//
//  main.m
//  代理設計模式
/*
    代理設計模式的3種使用場合
        1,A 想讓B 幫他做些事情,    可以讓B成為A的代理先
        2,A 想通知B,A發生了一些事情,可以讓B成為A的代理先
        3,B 想監聽A發生了一些事情,  可以讓B成為A的代理先
    代理設置模式的標准4步
    1,定義一份protocol協議
    2,B想做代理,必須先遵守並實現上面那份協議
    3,A裡面定義一個成員 id  delegate
    4,將B的實例對象,賦值給A的成員變量delegate
 */
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import 
#import "Baby.h"
#import "nana.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        Baby *bb = [[Baby alloc]init];
        bb.age = 1;
        bb.Nanny = [[nana alloc]init];
        // 嬰兒餓了
        [bb hungry];
        
    }
    return 0;
}


 

 

協議

BabyNannyDelegate.h

 

//
//  BabyNannyDelegate.h
//  代理設置模式
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import 
@class Baby;
@protocol BabyNannyDelegate 

// 嬰兒保姆協議中 規定三個方法
// 給嬰兒喂奶
- (void)feedBaby:(Baby *)baby;
// 逗樂嬰兒
- (void)amuseBaby:(Baby *)baby;
// 拍打嬰兒,使其入睡
- (void)patBaby:(Baby *)baby;
@end


 

 

 

Baby.h

//
//  Baby.h
//  代理設置模式
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import 
#import "BabyNannyDelegate.h"
@interface Baby : NSObject
// 對象是strong id代表任何對象都可以作保姆,只要遵守保姆協議,並實現協議中的三個方法
@property (nonatomic,strong) id Nanny;


@property (nonatomic , assign) int age;
- (void)cry;    // 嬰兒哭啦
- (void)sleep;  // 嬰兒想睡啦
- (void)hungry; // 嬰兒想吃奶了
@end


 

 

Baby.m

 

//
//  Baby.m
//  代理設置模式
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "Baby.h"

@implementation Baby
- (void)cry
{
    NSLog(@"%d歲的嬰兒...哭啦",_age);
    // 調用代理裡面的逗樂嬰兒的方法
    [_Nanny amuseBaby:self];
}
- (void)sleep
{
    NSLog(@"%d歲的嬰兒...想睡覺啦",_age);
    // 調用代理裡面的拍打嬰兒使其入睡的方法
    [_Nanny patBaby:self];
}
- (void)hungry
{
    NSLog(@"%d歲的嬰兒...想吃奶啦",_age);
    // 調用代理裡面的給嬰兒喂奶的方法
    [_Nanny feedBaby:self];
}

@end


 

 

 

保姆nana.h

 

//
//  nana.h
//  代理設置模式
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import 
#import "BabyNannyDelegate.h"

// 娜娜 現在想照看嬰兒,必須遵守嬰兒保姆協議,並實現裡面的方法
@interface nana : NSObject
@end


 

 

 

保姆nana.m

//
//  nana.m
//  代理設置模式
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "nana.h"
#import "Baby.h"
@implementation nana
- (void)feedBaby:(Baby *)baby
{
    NSLog(@"娜娜正在給%d歲的嬰兒喂奶",baby.age);
}
- (void)amuseBaby:(Baby *)baby
{
    NSLog(@"娜娜正在哄%d歲的嬰兒開心",baby.age);
}
- (void)patBaby:(Baby *)baby
{
    NSLog(@"娜娜正在輕輕拍打%d歲的嬰兒入睡",baby.age);
}
@end

\

 

 

 

 

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved