------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
// 动态类型检测:响应方法
//
//
Animal *ani = [Dognew];
// if ([ani respondsToSelector:@selector(eat)]) {
//
// [ani performSelector:@selector(eat)]; //作用,响应方法,无参
//
// [(Dog *)ani eat:@"一块沾着粑粑的巧克力"]; //有参
//
[(Dog *)ani eat];
//
// }else{
//
// NSLog(@"没有响应");
//
// }
// 2)通过performSelector: withObject: 响应有参数方法
// [ani performSelector:@selector(eat:) withObject:@"一块沾着粑粑棒棒糖"];
// 3)通过performSelector: withObject: withObjece:响应两个参数方法
// [ani performSelector:@selector(eat:andFoodName:) withObject:@"班长养的" withObjece:@"班长吃剩的棒棒糖"];
[(Dog *)ani eat:@"班长养的狗,"andFoodName:@"班长吃剩的棒棒糖"];
[ani performSelector:@selector(eat:andFoodName:)withObject:@"班长养的饿狗"withObject:@"还是一块沾有粑粑的棒棒糖"];
}
return 0;
}
Animal.h
#import <Foundation/Foundation.h>
@interface Animal : NSObject
//声明方法
-(void)run;
@end
Animal.m
#import "Animal.h"
@implementation Animal
-(void)run{
// 提示已调用该方法
NSLog(@"动物在跑");
}
@end
Dog.h
#import "Animal.h"
@interface Dog : Animal
//声明方法
-(void)eat;
-(void)eat:(NSString *)foodNmae;
-(void)eat:(NSString *)dogName andFoodName:(NSString *)foodName;
@end
Dog.m
#import "Dog.h"
@implementation Dog
//实现方法
-(void)run{
// 提示已调用该方法
NSLog(@"狗在跑");
}
//实现方法
-(void)eat{
// 提示已调用该方法
NSLog(@"狗在吃");
}
//实现方法
-(void)eat:(NSString *)foodNmae{
// 提示已调用该方法
NSLog(@"狗在吃%@",foodNmae);
}
//实现方法
-(void)eat:(NSString *)dogName andFoodName:(NSString *)foodName{
// 提示已调用该方法
NSLog(@"%@在吃%@",dogName,foodName);
}
@end