//去除在ARC下使用performSelector:的警告
//[对象指针 减方法]
//[Dog alloc] --> alloc出来的这块空间是对象
//dog --> 对象指针,指向对象
Dog *dog = [[Dog alloc]init];
//在调用一个方法前,先判断类里面是否已经实现了这个方法 --> 判断类是否响应这个方法
// [dog bark];
//去除在ARC下使用performSelector:的警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
//选择器:SEL. @selector(方法名),把对应的方法名转变为SEL类型
SEL sel = @selector(bark);
if ([dog respondsToSelector:sel]) {
//如果dog可以响应选择器里面的方法
[dog bark];
}
else{
NSLog(@"没有实现bark这个方法");
}
SEL sel1 = @selector(run);
if ([dog respondsToSelector:sel1]) {
//1.
// [dog run];
//2.
[dog performSelector:sel1];
}
else{
NSLog(@"没有实现run这个方法");
}
SEL sel2 = @selector(setName:);
if ([dog respondsToSelector:sel2]) {
//如果能响应选择器
//相当于[dog setName:@"xiaobai"];
[dog performSelector:sel2 withObject:@"xiaobai"];
}
else{
NSLog(@"没有实现setName:这个方法");
}
NSString *dogName = dog.name;
NSLog(@"dogName = %@",dogName);
#pragma clang diagnostic pop
二、选择器SEL
选择器类型 SEL 和C语言函数指针类似
@selector(方法名) 可以把一个方法转化为选择器,这样我们就可以通过选择器调用函数
我们可以把OC的方法 都转化为SEL选择器
ARC 产生的警告
忽略 选择器 这个警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
#pragma clang diagnostic pop