黑马程序员技术交流社区
标题:
OC-动态类型检测-判断对象能否响应指定的方法
[打印本页]
作者:
wangchao1992
时间:
2015-8-17 17:35
标题:
OC-动态类型检测-判断对象能否响应指定的方法
本帖最后由 wangchao1992 于 2015-8-17 17:46 编辑
动态类型检测的第二部分
1) 判断实例对象能否响应(调用)指定的方法 (常用方法)
格式: [对象 respondsToSelector:方法的sel];
1、方法响应的检测
Animal *ani = [Dog new];
SEL s1 = @selector(eat); //把eat包装成SEL类型
BOOL isRespond = [ani respondsToSelector:s1];
1
if (isRespond) {
[(Dog *)ani eat];
}else{
NSLog(@"该对象不能调用此方法!");
}
2、判断类中有没有(调用)指定的方法
Animal *ani = [Dog new];
SEL s1 = @selector(eat); //把eat包装成SEL类型
// 1
isRespond = [Dog instancesRespondToSelector:s1];
// 1
isRespond = [Dog instancesRespondToSelector:@selector(run)];
// 0 Dog 类中,没有定义test方法
isRespond = [Dog instancesRespondToSelector:@selector(test)];
#import <Foundation/Foundation.h>
@interface Animal : NSObject
-(void)run;
@end
#import "Animal.h"
@interface Dog : Animal
-(void)eat;
@end
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2