代理,block回調DEMO

#import <Foundation/Foundation.h>
#import "Soldier.h"
#import "Commander.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Commander *shizhang=[[Commander alloc]init];
        //block
//        [shizhang command];
        
        
        //delegate
//        [shizhang commandForDelegate];
        
        //selector
        [shizhang command];
    
    }
    return 0;
}
#import <Foundation/Foundation.h>

@protocol killJapaneseDelegate <NSObject>

-(void)getMessage:(int)num;

@end

@interface Soldier : NSObject
//block
-(void)killGhostByCommand:(NSString *)com andBlock:(void (^)(int))block;

-(int)killGhost;

@property (strong)id<killJapaneseDelegate>delegate;
//delegate
-(void)sendMessage;

//selector

-(void)useSelector:(SEL)sel andObj:(id)obj;

@end
#import "Soldier.h"



@implementation Soldier

-(int)killGhost{
    int a=0;
  
    for (int i=1; i<=10; i++) {
        a+=10;
        NSLog(@"%d刀:張嘎殺了%d個鬼子",i,a);
        sleep(1);
        }
    NSLog(@"哎呀,腰子閃了");
    return a;
    
}

-(void)killGhostByCommand:(NSString *)com andBlock:(void (^)(int))block{

    if ([com isEqualToString:@"殺鬼子"]) {
       NSLog(@"收到命令,師長我一刀能殺10個!");
        block([self killGhost]);
    }else{
    
        NSLog(@"你說啥,我聽不懂");
    
    }

}

-(void)sendMessage{

    NSLog(@"收到命令,師長我一刀能殺10個!");
    
    [self.delegate getMessage:[self killGhost]];
}


//selector
-(void)useSelector:(SEL)sel andObj:(id)obj{

    [obj performSelector:sel];

}

@end
#import <Foundation/Foundation.h>
#import "Soldier.h"

@interface Commander : NSObject<killJapaneseDelegate>

//block
-(void)command;


//delegate
-(void)commandForDelegate;


//selector
-(void)howToKillGhost;

-(void)sendSelector;

@end
#import "Commander.h"

@implementation Commander

//block

-(void)command{
    Soldier *zhangga=[[Soldier alloc]init];

    void (^block)(int)=^(int num){
    
        NSLog(@"師長:才殺了%d個,還有臉回來",num);
    
    };
    
    [zhangga killGhostByCommand:@"殺鬼子" andBlock:block];
}

//delegate

-(void)commandForDelegate{
    Soldier *zhangga=[[Soldier alloc]init];
    
    zhangga.delegate=self;

    [zhangga sendMessage];
}

-(void)getMessage:(int)num{

     NSLog(@"師長:才殺了%d個,還有臉回來",num);
    
}


//selector
-(void)howToKillGhost{
    NSLog(@"如今傳你絕學,一刀殺十個");

    Soldier *s=[[Soldier alloc]init];
    
    NSLog(@"師長:才殺了%d個,還有臉回來",[s killGhost]);
}

-(void)sendSelector{
    Soldier *zhangga=[[Soldier alloc]init];
    
    [zhangga useSelector:@selector(howToKillGhost:) andObj:self];

}

@end
相關文章
相關標籤/搜索