前言
1 ) Objective-C中的编译器叫什么名字,LLVM,它可以编译C语言,Objective-C语言,Swift语言,C++语言。
2)编译器在编译的时候,判断1个指针是否可以调用指向的对象的方法,它的判断准则,就是那个指针类型,
所以,这个时候,我们可以很轻松的把编译器给骗过:
NSString *str = @“jack”;
[str sayHi];
好,我们说,这时候编译器会报错吧!我们想把编译器骗过,怎么骗过,是不是把它强转成Person *类型啊?
[(Person *)str sayHi];
这时候,编译器就不会报错了。
3)就算骗过了编译器,它还会再做运行检查。
所以,我们写的程序,就算编译通过了,不意味着可以完美的执行!
4)所以,能不能在执行sayHi();方法之前,我自己先判断一下,这个str指针指向的对象里面,到底有没有sayHi();方法
如何写代码,来先判断一下,对象当中是否有这个方法,如果有,再去执行,如果没有,就别去执行了。这样就可以避免,由于没有方法,而报错吧!
一、怎么判断有没有这个方法呢?
1)判断指针指向的对象中,是否有这个方法可以执行。
语法:
Person *p1 = [Person new];
