#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