//判断一个类是否存在
if ((NSClassFromString(@"NSTouchBar")) != nil) {
}
//判断一个方法是否存在,然后执行
SEL sel = NSSelectorFromString(@"provideWater");
if ([obj respondsToSelector:sel]) {
[obj performSelector:sel];
}
有个特殊情况,比如iOS 9以后系统出了个新方法- (void)xxxx:(BOOL)isXXX;
,我们想最低适配 iOS 7,此时我们可以判断一下该方法是否存在,但是参数是BOOL,怎么传?
//该方法要导入以下头文件
#import <objc/message.h>
SEL sel = NSSelectorFromString(@"xxxx:");
if ([self respondsToSelector: sel]) {//判断该方法是否存在
typedef void (*send_type)(Class*, SEL, BOOL);// Class 为方法所在的类
send_type exec = (send_type)objc_msgSend;
exec(self, sel, YES);
}