前言
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];